繁体   English   中英

如何以代码优先方式禁用Db模式不匹配的迁移?

[英]How to disable migration on Db schema mismatch in code-first approach?

在我们的团队中,我们的C#开发人员没有直接对数据库进行架构修改的权限。 有一个单独的团队可以为我们添加/更改表格。 当需要更改数据库架构的新需求到来时,他们会添加列/表并向我们提供详细信息,以便我们更新模型类。

以下是DataContext

public class FamilyDataContext : DbContext
{
    public FamilyDataContext() : base("FamilyDataContext")
    {
    }

    public DbSet<ResidentInformation> ResidentInformation { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

问题:尝试在此表中保存数据时出现错误。

自创建数据库以来,支持“ FamilyDataContext”上下文的模型已更改。 考虑使用Code First Migrations更新数据库( http://go.microsoft.com/fwlink/?LinkId=238269 )。

我想要的是,如果C#代码和Db模式中的Model定义不匹配,请给出一个错误,以便可以由dev或DBA手动修复。 而不是尝试自动升级数据库。 我不需要任何自动迁移。

反正有实现这个的方法吗?

您可以使用null初始化程序:

Database.SetInitializer(new NullDatabaseInitializer<ApplicationDbContext>());

但这并不能告诉您您的模型不同步。 为此,您需要制作一个自定义的初始化程序,然后执行类似的检查

if (!context.Database.CompatibleWithModel(true))
{
    // handle out of sync
}

以下是自定义初始化程序的演练: http : //www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

或更简洁的示例: https//coding.abel.nu/2012/03/prevent-ef-migrations-from-creating-or-changing-the-database/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM