我正在使用.NET MVC 5来创建应用程序。我正在使用代码第一种方法。我有一个单独的程序集来放置我的数据库类,并在不同的迁移文件夹中分隔我的上下文。到目前为止,我有2个上下文,其中一个是IdentityDb,它继承自IdentityDbContext。 到现在为止还挺好。但是当我尝试启用自动迁移时(因为我仍然没有生产版本并且自动迁移不会受到影响),IdentityDb会发生一些不好的事情。这就是我启用自动迁移的方式:
public class IdentityDb : IdentityDbContext<ApplicationUser>
{
public IdentityDb() : base("DefaultConnection")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<IdentityDb, Configuration>("DefaultConnection"));
}
}
当然我有Configuration类,种子方法和AutomaticMigrationsEnabled属性设置为true。一切似乎都很好,但是当我尝试做一些需要身份上下文(例如登录)的事情时,我收到此错误消息:
The ConnectionString property has not been initialized
它说错误的行是:
public IdentityDb() : base("DefaultConnection")
但确实如此。我假设当我在基础构造函数中将其作为“DefaultConnection”传递时,并且在实例化MigrateDatabaseToLatestVersion时,会设置连接字符串。
最后,我想说这只发生在IdentityDb上下文中。我在其他上下文中启用了自动迁移,CampaignignsDb,完全相同,并且运行正常。有没有人知道IdentityDb发生了什么?问题是因为这个类继承了IdentityDbContext,并且应该使用不同的方法启用自动迁移吗?
提前致谢!
答案 0 :(得分:2)
从"DefaultConnection"
移除MigrateDatabaseToLatestVersion
。您已经传入了配置类型,而后者应该使用您的DBContext。所以它会是这样的:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<IdentityDb, Configuration>());