Я отображаю данные на странице Razor Pages .NET Core 2.2.Это позволяет мне ссылаться на контекст моей базы данных только один раз и выдает ошибку, если я пытаюсь получить значение из другой таблицы.
Вот что работает во всем приложении каждый раз, когда я делаю что-то на основеtable.
public class DetailsModel : PageModel
{
private readonly OESAC.Models.MyDbContext _context;
public DetailsModel(OESAC.Models.MyDbContext context)
{
_context = context;
}
public OESAC.Models.Courses_New Courses_New { get; set; }
public async Task<IActionResult> OnGetAsync(int? id)
{
ViewData["ThisID"] = id;
if (id == null)
{
return NotFound();
}
Courses_New = await _context.Courses_New.FirstOrDefaultAsync(m => m.NewCourseTempID == id)
Ниже, когда я пытаюсь получить доступ к другой таблице внутри той же страницы / класса, я получаю подчеркнутое имя "DocsForThisCourseModel" и ошибку "Метод должен иметь тип возвращаемого значения":
private readonly OESAC.Models.MyDbContext _context;
public DocsForThisCourseModel(OESAC.Models.MyDbContext context)
{
_context = context;
}
У меня такое чувство, что я могу изменить всю систему для использования контроллера и представления, но вместо этого я довольно хорошо разбираюсь в использовании System.Data.SqlClient, и я просто выполнил запрос, чтобы получить количество строккак это:
using (SqlConnection con = new SqlConnection("Data Source=Txx\\SQL20xx4;Initial Catalog=xxx;User ID=xxx;Password=xxx;Persist Security Info=true"))
{
string sql = "SELECT Count(Course_NewID) As ExistingCourses FROM DocsForThisCourse WHERE Course_NewID =@id";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@id", id);
con.Open();
int count = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
//HIDE "SEE DOCUMENTS" BUTTON BECAUSE THERE ARE NO DOCUMENTS
if (count==0)
{
ViewData["HasDocs"] = "no";
}
else
{
ViewData["HasDocs"] = "yes";
}
}
Все это работает, и я делаю это в нескольких местах, так как страница Razor кажется ограниченной при попытке выполнить 2 запроса.Моя дилемма в том, что я не могу получить ссылку на DefaultConnection в моем файле appsettings.json.Поэтому я просто скопировал строку и использовал ее в коде, когда это необходимо.
Я пробовал это, но безрезультатно.
var connString = Configuration.GetConnectionString("DefaultConnection");
Полагаю, что когда-нибудь смогу получить строку подключенияот appsettings.json Я буду немного безопаснее, чем жестко его кодировать.