我有一个应用程序,它使用存储在单个数据库中的两个独立模型。第一个模型使用迁移进行设置,并且是在数据库中创建迁移数据的模型。第二个是一个非常简单的模型,根本不需要模型验证 - 它使用的表存在且具有适当的结构。第二个Context在具有相同表结构的单独数据库中正常工作。
问题是它在与第一个模型在同一个数据库中运行时失败,因为它确实提供了某种模型验证。它抱怨自上次更新以来上下文已经发生了变化,但当然迁移数据不包含有关第二个上下文表的任何内容。
是否可以关闭上下文的元数据验证,并让第二个上下文按原样对表进行操作,因为我知道这有用吗?
在上下文构造函数中,但没有效果。
答案 0 :(得分:11)
解决方案是使用实现“无所事事”的数据库初始化程序,基本上什么都不做。
public class QueueMessageManagerContextInitializer : IDatabaseInitializer<QueueMessageManagerContext>
{
protected void Seed(QueueMessageManagerContext context)
{
}
public void InitializeDatabase(QueueMessageManagerContext context)
{
// do nothing
Seed(context);
}
}
一次性使用启动代码:
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
//Database.SetInitializer<QueueMessageManagerContext>(new DropCreateDatabaseIfModelChanges<QueueMessageManagerContext>());
Database.SetInitializer<QueueMessageManagerContext>(new QueueMessageManagerContextInitializer());
}
简单但不明显的解决方案。
修改强>
更简单的解决方案:只需将NULL传递给SetInitializer()方法:
Database.SetInitializer<QueueMessageManagerContext>(null);