如何禁用EF中的代码优先功能(MVC4 Visual Studio 2012)

时间:2013-02-02 14:01:03

标签: entity-framework asp.net-mvc-4 visual-studio-2012 ef-code-first

如何在EF(Visual Studio 2012)中禁用代码优先功能

我正在使用Visual Studio 2012,MVC4(Internet应用程序模板)。

我想使用EF,但不使用其代码优先功能。我希望应用程序出错,而不是根据我的代码创建或修改我的数据库。 (我只是不能忍受我的数据库在幕后被改变的感觉...我希望应用程序使用我创建的确切数据库...如果有任何必须更改的东西,我会自己动手)

这可能是新的Ef(VS2012)吗?

我见过很多人都这么问,但到目前为止我无法找到答案。

1 个答案:

答案 0 :(得分:23)

您可以使用Code First,并确保在通过将数据库初始化程序设置为null来更改模型时,数据库永远不会更新或覆盖:

Database.SetInitializer<MyDbContext>(null);

它是Database类的静态方法,应该在应用程序的开头调用,例如在global.asax或上下文类的静态构造函数中。这样做,您必须手动更改模型类和数据库模式,以便它们匹配。

您还可以使用“反向工程”功能从现有数据库创建“代码优先”模型。这里解释:http://msdn.microsoft.com/en-us/data/jj200620

或者,如果您根本不想使用Code First并与模型设计师合作,则可以使用数据库优先方法,如下所述:http://msdn.microsoft.com/en-us/data/jj206878

有关所有可能选项的概述,请访问:http://msdn.microsoft.com/en-us/data/ee712907.aspx