我有一个 .NET core 1.0 web 应用程序运行良好。我必须升级到 .NET Core 2.0。我还必须为我的 SQLite 数据库添加迁移步骤。
如果我启动这个命令:
添加迁移 MyMigrationStepName
我收到此错误:
无法创建“ServicesDbContext”类型的对象。添加一个
'IDesignTimeDbContextFactory' 的实现
项目,或查看https://go.microsoft.com/fwlink/?linkid=851728 https://go.microsoft.com/fwlink/?linkid=851728为了
设计时支持的其他模式。
我在 SO 以及其他博客和网站上看到了很多答案,但没有一个真正说明在哪里实现这样的接口以及具体方法应该包含哪些代码!
Sample:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
}
public class ApplicationContextDbFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
ApplicationDbContext IDesignTimeDbContextFactory<ApplicationDbContext>.CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
optionsBuilder.UseSqlServer<ApplicationDbContext>("Server = (localdb)\\mssqllocaldb; Database = MyDatabaseName; Trusted_Connection = True; MultipleActiveResultSets = true");
return new ApplicationDbContext(optionsBuilder.Options);
}
}
Location:
将该类放在 ApplicationDbContext 所在的位置。当您使用 dotnet ef cli 命令时,它将自动选取。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)