提问人:sadegh 提问时间:10/22/2023 最后编辑:marc_ssadegh 更新时间:10/23/2023 访问量:56
为什么我在 ASP.NET Core 7 中出现数据库提供程序错误?
Why do I get database provider error in ASP.NET Core 7?
问:
我有一个 ASP.NET Core 7 MVC项目。我想将我的 SQL Server 连接字符串放在文件中,然后在整个项目和层中使用它。appsettings.json
但是我收到提供程序错误:
System.InvalidOperationException:“尚未为此 DbContext 配置任何数据库提供程序。可以通过重写“DbContext.OnConfiguring”方法或在应用程序服务提供程序上使用“AddDbContext”来配置提供程序。如果使用“AddDbContext”,则还要确保 DbContext 类型在其构造函数中接受 DbContextOptions 对象,并将其传递给 DbContext 的基构造函数。
我该如何解决这个问题?
这是我的:appsettings.json
"ConnectionStrings": {
"CON1": "data source=DESKTOP-JU6B74d\\SQL2019;initial catalog = Laser; integrated security = true;TrustServerCertificate=True;"
},
这是文件设置:program
DbContext
builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<DB>(options =>
options.UseSqlServer(builder.Configuration.GetConnectionString("CON1")));
这是我在数据访问层的一部分:DbContext
public class DB : IdentityDbContext
{
public DB() : base() { }
public DB(DbContextOptions<DB> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder OptionsBuilder)
{
OptionsBuilder.UseSqlServer(@"data source=DESKTOP-JU6B74d\SQL2019;initial catalog = Laser; integrated security = true;TrustServerCertificate=True;");
base.OnConfiguring(OptionsBuilder);
}
}
当我使用它时,我没有收到提供程序错误,程序可以正常工作。但在这种形式下,我也应该在文件中重复我的连接字符串。DbContext
DbContext
因此,当我注释掉
protected override void OnConfiguring
方法,我收到提供程序错误。如何解决此问题并且仅从文件中读取连接字符串 - 以及为什么会出现此问题?appsettings.json
答:
您可以参考检查生成的数据库上下文类和注册来创建数据库上下文类和注册。
数据库上下文类:
public class MvcMovieContext : DbContext
{
public MvcMovieContext (DbContextOptions<MvcMovieContext> options)
: base(options)
{
}
}
构造函数使用依赖项注入将数据库上下文 (MvcMovieContext) 注入控制器:
public class MoviesController : Controller
{
private readonly MvcMovieContext _context;
public MoviesController(MvcMovieContext context)
{
_context = context;
}
}
此外,配置键不区分大小写。例如,ConnectionString 和 connectionstring 被视为等效键。您可以查看配置键和值以了解更多信息。
评论
DB