[英]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.