如何停止EF(代码优先)检查架构更改

Jon*_*nny 7 sql database entity-framework code-first

我有一个导致脱发的问题......

我使用Code First(EF)进行项目构建; 一切都很好,它就像一个魅力但是,我找不到一个合适的方式允许数据库更改(通过.sql脚本),而没有应用程序在启动时发脾气,因为架构已更改.

我已阅读并阅读此问题,我已删除EdmMetaData表,因此无法比较数据库的哈希值,但随后读取了EF的错误,如果删除它,它仍然认为架构已更改(如它无法识别丢失的表,因此它比较一个空字符串!).

另外,我尝试在Global.asax文件中使用Database.SetInitializer(null),但这意味着我以后无法访问数据模型.

如果架构发生变化等,每个人都会讨论使用删除数据库的选项.

这就是我要找的东西:

对于EF/Code First来做......没事!甜蜜的FA!没出息!

...如果我通过外部应用程序更改架构,我希望它完全忽略这些更改,并且只是ASSUME我已经通过.sql脚本对相关的模型更改进行了这些数据库更改.如果我错过了一个专栏或桌子,那么我接受了我的愚蠢,我希望发脾气,但是,直到我犯了一个错误,我希望EF相信我.

这意味着我可以随时使用.sql脚本轻松更新任何客户端,而不用担心EF会出现问题!:(

任何想法的人?

Jas*_*ase 8

使用更新的Entity Framework版本,您不再需要执行Ladislav Mrnka所说的内容.从EF 4.3开始,您只需要将WebContext的初始化程序设置为null.例如:

Database.SetInitializer<FabrikamFiberWebContext>(null);
Run Code Online (Sandbox Code Playgroud)


Lad*_*nka 5

除了设置初始化程序以null将其添加到您的上下文类:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    model.Conventions.Remove<IncludeMetadataConvention>();
}
Run Code Online (Sandbox Code Playgroud)

它将关闭哈希比较.