C# 错误CS0103:名称'_上下文';在当前上下文中不存在
我试图使用Razor页面和实体框架连接数据库,但我遇到了这个错误 错误CS0103:当前上下文中不存在名称“\u context” 代码如下:C# 错误CS0103:名称'_上下文';在当前上下文中不存在,c#,entity-framework,razor,entity-framework-core,razor-pages,C#,Entity Framework,Razor,Entity Framework Core,Razor Pages,我试图使用Razor页面和实体框架连接数据库,但我遇到了这个错误 错误CS0103:当前上下文中不存在名称“\u context” 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;
using myWebApp.Models;
using Microsoft.EntityFrameworkCore;
namespace myWebApp.Pages
{
public class EmployeeModel : PageModel
{
private readonly ILogger<EmployeeModel> _logger;
public EmployeeModel(ILogger<EmployeeModel> logger)
{
_logger = logger;
}
public void OnGet()
{
}
// Create
public async Task<IActionResult> OnPostAsync()
{
var emptyreservation = new Reservation();
if (await TryUpdateModelAsync<Reservation>(
emptyreservation,
"reservation", // Prefix for form value.
r => r.reservationid, r => r.dayid, r => r.roomid, r => r.employeeid))
{
_context.Reservation.Add(emptyreservation);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
return Page();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.RazorPages;
使用Microsoft.Extensions.Logging;
使用myWebApp.Models;
使用Microsoft.EntityFrameworkCore;
名称空间myWebApp.Pages
{
公共类EmployeeModel:PageModel
{
专用只读ILogger\u记录器;
公共雇员模型(ILogger记录器)
{
_记录器=记录器;
}
公共互联网
{
}
//创造
公共异步任务OnPostAsync()
{
var emptyreservation=新保留();
如果(等待TryUpdateModelAsync(
空保存,
“reservation”,//表单值的前缀。
r=>r.reservationid,r=>r.dayid,r=>r.roomid,r=>r.employeeid)
{
_context.Reservation.Add(emptyreservation);
wait_context.SaveChangesAsync();
返回页首(“/索引”);
}
返回页();
}
}
}
,因为您试图在不创建dbcontext实例的情况下访问它。(缺少依赖项注入)
将以下内容添加到您的代码中,它将起作用
private readonly ILogger<EmployeeModel> _logger;
private YourDbContextName _context
public EmployeeModel(ILogger<EmployeeModel> logger, YourDbContextName context)
{
_logger = logger;
_context = context
}
专用只读ILogger\u记录器;
私有YourDbContextName\u上下文
公共EmployeeModel(ILogger记录器,YourDbContextName上下文)
{
_记录器=记录器;
_上下文=上下文
}
还要确保您的启动配置正确。您需要在类的顶部定义它,并将其注入构造函数中 那样
private readonly ILogger<EmployeeModel> _logger;
private [YourDbContextName] _context;
public EmployeeModel(ILogger<EmployeeModel> logger,[YourDbContextName] context)
{
_logger = logger;
_context = context;
}
专用只读ILogger\u记录器;
private[YourDbContextName]\u上下文;
公共EmployeeModel(ILogger记录器[YourDbContextName]上下文)
{
_记录器=记录器;
_上下文=上下文;
}
不要忘记在ConfigureServices函数中的Startup.cs文件中配置上下文
var connectionString = configuration["ConnectionStrings:sqlConnection"];
services.AddEntityFrameworkSqlServer();
services.AddDbContextPool<DatabaseContext>(options =>
options.UseSqlServer(connectionString));
var connectionString=configuration[“ConnectionStrings:sqlConnection”];
services.AddEntityFrameworkSqlServer();
services.AddDbContextPool(选项=>
使用SQLServer(connectionString));
如果他添加私有DbContext\u context;这行不通。