我正试图使用EF Core进行迁移,但出现了错误 - 我该如何修复这个错误?
PM> add-migration ini
无法创建类型为'ApplicationContext'的对象。请向项目添加一个'IDesignTimeDbContextFactory'的实现,或参见 https://go.microsoft.com/fwlink/?linkid=851728 以获取设计时支持的其他模式。我正试图使用EF Core进行迁移,但出现了错误 - 我该如何修复这个错误?
PM> add-migration ini
无法创建类型为'ApplicationContext'的对象。请向项目添加一个'IDesignTimeDbContextFactory'的实现,或参见 https://go.microsoft.com/fwlink/?linkid=851728 以获取设计时支持的其他模式。IDesignTimeDbContextFactory
的实现即可解决问题。public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<YourDbContext>
{
public YourDbContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var builder = new DbContextOptionsBuilder<YourDbContext >();
var connectionString = configuration.GetConnectionString("DefaultConnection");
builder.UseSqlServer(connectionString);
return new YourDbContext(builder.Options);
}
}
PM> Add-Migration -StartupProject[YourProjectPath(just press a tab all the.csproj paths will come up, and then choose your DataBaseLayer project to execute a migration for)] migrationName
dotnet ef migrations add v1.0 --project MyProject.Data --startup-project MyProject.UI
1. 在 ConfigureService 中修改您的代码:
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
x => x.MigrationsAssembly("WebApplication")));
dotnet ef migrations add Init
当表的主键没有手动设置(使用属性或FluentAPI)且没有自动确定(不是“Id”关键字,也不是“TableName”+“Id”)时,我遇到了这个错误。
堆栈:ASP.NET Core EF + Postgres (Npgsql)
Database.Migrate();
后,我能够添加新的迁移而没有错误。DbContext
的构造函数或者OnConfiguring
方法中有任何异常,也会出现这个错误信息。Database.EnsureCreated()
可能因为连接字符串不正确或者数据库被禁用而失败。
提示:为了找到问题的根源,只需将代码放在try catch块中,并使用Console.WriteLine();
显示异常信息。