Mah*_*eep 1 .net entity-framework entity-framework-6
在我的团队中,我们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>();
}
}
Run Code Online (Sandbox Code Playgroud)
问题:尝试在此表中保存数据时出错.
自创建数据库以来,支持'FamilyDataContext'上下文的模型已更改.请考虑使用"代码优先迁移"来更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269).
我想要的是,如果C#代码和Db模式中的模型定义不匹配,则给出错误,以便可以通过dev或DBA手动修复它; 而不是尝试自动升级数据库.我不想要任何自动迁移.
无论如何要实现这一目标吗?
您可以使用null初始化程序:
Database.SetInitializer(new NullDatabaseInitializer<ApplicationDbContext>());
Run Code Online (Sandbox Code Playgroud)
但这不会告诉你你的模型不同步.要做到这一点,你需要制作一个自定义初始化程序,然后进行检查
if (!context.Database.CompatibleWithModel(true))
{
// handle out of sync
}
Run Code Online (Sandbox Code Playgroud)
以下是自定义初始化程序的演练: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/
归档时间: |
|
查看次数: |
635 次 |
最近记录: |