我偶然发现了与中描述的相同的问题这个问题。此外,我不想从数据库中丢失 __migrationHistory 表。
我尝试使用建议的解决方案,即使用一个包含所有 DbSet 的“超级”上下文并使用正常的上下文,但出现错误。 (“支持 DbContext 的模型已更改”)
如果您只是从 SQL Server 中删除 __migrationHistory 表,这是很容易避免的,但正如我所说,我想保留历史记录。
我找到了一个简单易行的解决方案,请参阅下面的答案。
首先,您必须为迁移配置创建一个“超级”上下文。
MySuperContext : DbContext
{
// All DbSet<> s from your different contexts have to be referenced here once, you will only use this class for the migrations.
public MySuperContext() : base("YourConnectionString")
{
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<MySuperContext, MyMigrationsConfiguration>());
}
}
然后只需创建以下类:
public class NoDatabaseInitializer<T> : IDatabaseInitializer<T> where T: DbContext
{
public void InitializeDatabase(T context)
{
// Do nothing, thats the sense of it!
}
}
现在,在您拥有的每个小上下文中,将其添加到构造函数中:
class MyUserContext : DbContext
{
public MyUserContext : base("MyConnectionString") // Can be a user context, etc
{
System.Data.Entity.Database.SetInitializer(new NoDatabaseInitializer<MyContext>());
}
}
现在你不会再收到这个错误了,
另外,您还将拥有您的迁移历史,
您将在一个数据库上使用多个上下文。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)