如何在EF(Visual Studio 2012)中禁用代码优先功能
我正在使用Visual Studio 2012,MVC4(Internet应用程序模板)。
我想使用EF,但不使用其代码优先功能。我希望应用程序出错,而不是根据我的代码创建或修改我的数据库。 (我只是不能忍受我的数据库在幕后被改变的感觉...我希望应用程序使用我创建的确切数据库...如果有任何必须更改的东西,我会自己动手)
这可能是新的Ef(VS2012)吗?
我见过很多人都这么问,但到目前为止我无法找到答案。
答案 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