C# 实体框架7未配置数据库提供程序=>;当迁移移动到另一个项目时
我是EF7新手。我知道这是一个重复的问题: 但是在你想结束这个问题之前先等一下。。。继续读下去C# 实体框架7未配置数据库提供程序=>;当迁移移动到另一个项目时,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我是EF7新手。我知道这是一个重复的问题: 但是在你想结束这个问题之前先等一下。。。继续读下去 services.AddEntityFramework() .AddSqlServer() .AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddScoped<TestRepository, TestRepository>();
我这边坏了什么?我使用的是EF 7 RC1和dnx 451
只有将ApplicationDbContext/ApplicationUser和整个Migrations文件夹移动到一个额外的项目(比如“DataAccess”)时,才会发生这种情况。然后一切似乎都中断了。尝试将上下文类移动到“DataAccess”项目中,并覆盖“DataAccess”项目中上下文的OnConfigurang方法,然后运行迁移
public partial class MyContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlServer(@"Server=****;Database=***;user id=***;password=***");
}
}
如果你不想硬编码你的连接字符串,你也可以像下面这样做。DI将为您注入选项
public partial class MyContext : DbContext
{
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
}
"dependencies": {
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
}
DataAccess
作为依赖项。由于DataAccess
引用了上述两个包,您可以从WebProject中删除这些引用。现在构建应该成功了,您可以启动web应用程序了
-p
标志。比如,dnx ef迁移添加示例-p DataAccess
出现此问题是因为这些命令是从DataAccess项目中的cmd运行的。正在初始化所有服务的启动类位于WebProject中。当您尝试从DataAccess目录运行命令时,
dnx ef
将被识别,因为EntityFramework.commands
被引用,但当您尝试使用迁移时,服务未初始化,因此将无法引发上述异常。是否尝试指定上下文,例如dnx数据库更新-c ApplicationDbContext
?您还可以通过CMD直接在DataAccess项目中指定项目-p
,并且我运行dnx ef数据库更新-c ApplicationDbContext=>与以前相同的错误!我对-p TGB.DataAccess=>执行了与以前相同的错误!我更新了我的问题并删除了我的ApplicationDbContext代码,因为我没有使用重载构造函数,因为没有任何东西可以重载。。。我想这就是问题所在。这个公共MyContext(DbContextOptions):base(options)在我的代码中是不可能的,因为MyContext没有带任何参数的构造函数。是的,我从DbContext继承!如何在控制器中或需要的任何地方实例化MyContext()?
public partial class MyContext : DbContext
{
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
}
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
}
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<WtContext>(options =>
options.UseSqlServer(Configuration["Data:MyDb:ConnectionString"]));
}
{
"Data": {
"MyDb": {
"ConnectionString": "**********"
}
}
}
"dependencies": {
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
}