我是EF代码的新手.我有一个现有的生产数据库,我首先使用EF 4.3.1代码,一切正常.现在我刚刚更新了我的数据库模式并获得了异常
System.InvalidOperationException: The model backing the 'MyDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
我不能使用DropCreateDatabaseIfModelChanges,因为它正在生产中,采用何种最简单的方法来应对架构更改?
谢谢.
解决方法
由于EF-CF迁移是一个相当新的概念,我建议采用一个古老的成熟过程并修改它以使用我们的新工具,如EF.这就是我们的工作:
>使用DropCreateDatabaseIfModelChanges进行本地开发.这将允许您使本地开发副本与您的模型同步(在代码中).每次构建/运行时,都会获得更新的本地数据库.您还可以使用初始化程序来加载测试数据等.Database.SetInitializer< DBContextNameHere>(new DBContextInitializerNameHere());
>使用RedGate的sqlCompare工具将本地开发与生产进行比较,并自动生成用于部署的更改脚本. (注意:您也可以从工具中自动部署)
http://www.red-gate.com/products/sql-development/sql-compare/index-b
关键的好处是您不必更改本地开发过程,并通过生成的脚本获得可重复和版本化的部署.您还可以将其与sql源代码管理工具结合使用,以将所有sql对象和部署脚本(甚至数据)保留在源代码管理中.
不,我不为这些家伙工作我只是喜欢他们的工具以及它如何帮助我解决同样的问题.