entity-framework – 可能让DbContext忽略数据库中的迁移/版本数
发布时间:2020-12-12 06:26:52 所属栏目:MsSql教程 来源:网络整理
导读:我有一个应用程序,它使用存储在单个数据库中的两个单独的模型.第一个模型使用迁移进行设置,并且是在数据库中创建迁移数据的模型.第二个是一个非常简单的模型,根本不需要模型验证 – 它使用的表存在且具有适当的结构.第二个Context在具有相同表结构的单独数据
我有一个应用程序,它使用存储在单个数据库中的两个单独的模型.第一个模型使用迁移进行设置,并且是在数据库中创建迁移数据的模型.第二个是一个非常简单的模型,根本不需要模型验证 – 它使用的表存在且具有适当的结构.第二个Context在具有相同表结构的单独数据库中正常工作.
问题是它与第一个模型在同一个数据库中运行时失败,因为它确实提供了某种模型验证.它抱怨自上次更新后上下文发生了变化,但当然迁移数据不包含有关第二个上下文表的任何内容. 是否可以关闭上下文的元数据验证,并让第二个上下文按原样对表进行处理,因为我知道它有效吗? 在上下文构造函数中,但没有任何效果. 解决方法解决方案是使用实现“无所事事”的数据库初始化程序,基本上什么都不做.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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |