Ara*_*ash 2 c# linq dbcontext entity-framework-core .net-core
我想使用简单的LINQ命令从我的表"Header"中选择数据,但我遇到了错误.
我的行动
public HeaderModel GetHeaderInformation()
{
using(var context = new ApplicationDbContext())
{
var header = context.Headers.Select(x => new HeaderModel
{
colorCode = x.colorCode,
height = x.height,
Id = x.Id,
left = x.left,
top = x.top,
width = x.width
}).FirstOrDefault();
return header;
}
}
Run Code Online (Sandbox Code Playgroud)
错误
附加信息:尚未为此DbContext配置数据库提供程序.可以通过覆盖DbContext.OnConfiguring方法或在应用程序服务提供程序上使用AddDbContext来配置提供程序.如果使用AddDbContext,那么还要确保您的DbContext类型在其构造函数中接受DbContextOptions对象,并将其传递给DbContext的基础构造函数.
我的ApplicationDbContext
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options) { }
public ApplicationDbContext() : base() { }
public DbSet<Header> Headers { get; set; }
public DbSet<Menu> Menus { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的Startup.cs
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddApplicationInsightsTelemetry(Configuration);
services.AddIdentity<ApplicationUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();
services.AddMvc();
Run Code Online (Sandbox Code Playgroud)
提前致谢.
5ar*_*5ar 12
您正在使用依赖注入.services.AddDbContext负责创建一个DbContext对象.使用块是没有意义的,因为通过这样做,您实例化了一个没有连接字符串的新ApplicationDbContext.
写这样的方法:
public HeaderModel GetHeaderInformation(ApplicationDbContext context)
{
// the code inside your using block
}
Run Code Online (Sandbox Code Playgroud)
和.Net将通过依赖注入来解决上下文.
此外,通常的做法是将DbContext作为构造函数类中的私有只读属性.所以你可能想要做这样的事情:
public class MyConroller : Controller
{
private readonly MyDbContext _context;
public MyConroller(MyDbContext ctx)
{
_context = ctx;
}
}
Run Code Online (Sandbox Code Playgroud)
并在您的方法中使用上下文属性.
| 归档时间: |
|
| 查看次数: |
6122 次 |
| 最近记录: |