DotNet Core,没有为此 DbContext 配置数据库提供程序
Posted
技术标签:
【中文标题】DotNet Core,没有为此 DbContext 配置数据库提供程序【英文标题】:DotNet Core , No database provider has been configured for this DbContext 【发布时间】:2017-09-02 01:47:26 【问题描述】:我想使用一个简单的 LINQ 命令从我的表“标题”中选择数据,但我遇到了错误。
我的行动
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;
错误
附加信息:未配置任何数据库提供程序 这个 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;
我的 Startup.cs
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddApplicationInsightsTelemetry(Configuration);
services.AddIdentity<ApplicationUser, IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>().AddDefaultTokenProviders();
services.AddMvc();
提前致谢。
【问题讨论】:
【参考方案1】:您正在使用依赖注入。 services.AddDbContext
负责为您创建一个 DbContext 对象。
使用 using 块是没有意义的,因为这样做会实例化一个没有连接字符串的新 ApplicationDbContext。
像这样写你的方法:
public HeaderModel GetHeaderInformation(ApplicationDbContext context)
// the code inside your using block
.Net 将通过依赖注入解析上下文。
此外,一种常见的做法是将 DbContext 作为构造函数类中的私有只读属性。所以你可能想做这样的事情:
public class MyConroller : Controller
private readonly MyDbContext _context;
public MyConroller(MyDbContext ctx)
_context = ctx;
并且只在你的方法中使用上下文属性。
【讨论】:
感谢您的回复,我只想在 using 块中新建我的 dbContext 并使用它的 DbSet 来选择、添加和删除数据。你的解决方案很好,但它没有解决我的问题。 如何将 dbcontext 注入到非控制器类的构造函数中? @zuckerthoben 你有这个问题的答案here :)【参考方案2】:您应该删除无参数构造函数,因为它可能是在 DI 创建新实例时调用的构造函数。我知道对于某些人来说这是问题所在,我希望它有所帮助。
【讨论】:
以上是关于DotNet Core,没有为此 DbContext 配置数据库提供程序的主要内容,如果未能解决你的问题,请参考以下文章
dotnet core docker web api没有连接
如何通过 FTP 发布 dotnet core web 后端?
.NET Core - 何时使用“dotnet new sln”
无法从 API(dotNet Core)获取数据(使用角度)没有“Access-Control-Allow-Origin”