我一直用这个把头撞在墙上,并且一直在谷歌上搜索无济于事。
我刚刚开始一个新的 ASP.NET Core MVC 项目,我已将这两个包安装/更新为 2.2.0:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
我已将项目设置为期望 .NET Core 2.2.0。
我能够在包管理器控制台中使用此命令成功添加表架构以搭建数据库,因此我知道连接字符串正常/工作:
Scaffold-DbContext "SERVER=Server\Instance;DATABASE=Database;UID=user;PWD=password;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Table1, Table2, Table3
创建的模型文件,DatabaseDBContext.cs
看起来像这样:
public partial class DatabaseDBContext : DbContext
{
public DatabaseDBContext()
{
}
public DatabaseDBContext(DbContextOptions<DatabaseDBContext> options)
: base(options)
{
}
}
这还包含一种用于检索我的脚手架数据的方法,但对于生产使用来说不被认为是安全的,因此我将其注释掉:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("SERVER=Server\\Instance;DATABASE=Database;UID=user;PWD=password;");
}
}
我将相同的连接字符串添加到appsettings.json
file:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"DBConnString": "SERVER=Server\\Instance;DATABASE=Database;UID=user;PWD=password;"
}
}
然后我添加了DbContext
to the startup.cs
file:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDbContext<DatabaseDBContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DBConnString")));
}
尝试为其中一个表添加新的支架控制器会引发此错误:
寻找发电机“控制器”...
运行发电机“控制器”...
尝试在内存中编译应用程序。
尝试找出模型和 DbContext 的 EntityFramework 元数据:“TableName”
尚未为此 DbContext 配置数据库提供程序。可以通过重写 DbContext.OnConfiguring 方法或在应用程序服务提供程序上使用 AddDbContext 来配置提供程序。如果使用 AddDbContext,还请确保您的 DbContext 类型在其构造函数中接受 DbContextOptions 对象,并将其传递给 DbContext 的基本构造函数。
堆栈跟踪:
在 Microsoft.EntityFrameworkCore.Internal.DbContextServices.Initialize(IServiceProvider scopedProvider,IDbContextOptions contextOptions,DbContext context)
在 Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
在 Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastruct1 accessor)
at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func
1个工厂)
尚未为此 DbContext 配置数据库提供程序。可以通过重写 DbContext.OnConfiguring 方法或在应用程序服务提供程序上使用 AddDbContext 来配置提供程序。如果使用 AddDbContext,还请确保您的 DbContext 类型在其构造函数中接受 DbContextOptions 对象,并将其传递给 DbContext 的基本构造函数。
有人知道我在这里做错了什么吗?