如何将迁移添加到单独的数据项目中?
我有两个项目,一个包含上下文和模型的数据项目以及将使用它的网站项目。我已将两者完美地联系在一起,问题是当我尝试使用add-migration initialmigration
向数据项目添加迁移时,错误
无法创建“myContext”类型的对象。将“IDesignTimeDbContextFactory”的实现添加到项目中,或者查看https://go.microsoft.com/fwlink/?linkid=851728以获取在设计时支持的其他模式。
该链接包含有关如何添加IDesignTimeDbContextFactory
的详细信息,但由于UseSqlServer
不作为命令存在而无效。该页面链接到https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/#update-main-method-in-programcs处的更新版本,该版本表示将代码放入program.cs
即使我按照说明将其添加到我的数据项目(以及相关的引用),以便我包含< / p>
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
这就是它所说的,但我得到了相同的错误消息。因此,无论我是否包含代码部分,我都会得到相同的错误消息,尽管Microsoft.com页面声明上述代码会停止我出现的错误消息。
我已经尝试将上下文和模型放入我的主项目中,并且可以很好地生成迁移,因此这些代码的代码至少是正常的。
如何将迁移添加到单独的数据项目中?
答案 0 :(得分:0)
Add-Migration
有一个-Project
参数。
Add-Migration -Project MyProject -Context MyDbContext -Name InitialMigration
编辑:要查看cmdlet的所有选项(因为Package Manager Console只是PowerShell),请执行
Get-Help Add-Migration -Full
答案 1 :(得分:-1)
类库中的DbContext应如下所示:
public class ExampleDbContext : DbContext
{
public UserProfileDbContext(DbContextOptions<ExampleDbContext > options)
: base(options) { }
public DbSet<Example> Examples{ get; set; }
}
在你的Startup中你应该添加:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ExampleDbContext >(options =>
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));
}
这是在使用MS Sql server并在appsettings.json
中有连接字符串时然后例如使用包管理器控制台为您的类库项目与EF,它应该工作。 您应该在类库项目中使用以下nuget包:
Microsoft.EntityFrameworkCore,
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools