entity framework代码第一 – 如何运行生产数据库的更新数据库
我想知道如何运行生产数据库的“更新数据库”命令。
“更新数据库”数据库在我的本地机器上工作正常,但是如何获取这个数据用于生产数据呢?
所以,如果我改变了我的应用程序,然后通过Visual Studio运行“发布”,这对于代码方面的工作很好,但是如何为生产数据运行“更新 – 数据库”命令。
希望这个问题有道理…
谢谢,
添加什么@大卫说已经…
就我个人而言,我不相信automatic updates
的“活”的情况下,我总是喜欢手动数据库pipe理(即有一个permissions
需要创build或更改Db – 更不用说共享主机等),但从我看到迁移在同步方面非常稳定(实际上,通常“解开”的唯一方法是删除Db并强制全新更新)。
以下是我之前就如何script
和synchronize database / code
以及面向部署scheme(以及何时出现问题)的文章。 它不适用于你(但),但要记住的东西。
MVC3和Code First Migrations – 自从创build数据库以来,支持“blah”上下文的模型已经发生了变化“
请参阅在生产环境中使用entity framework(代码优先)迁移,以便在entity framework初始化时应用程序自动更新数据库。
现在,如果您更习惯于对迁移进行手动控制,则可以在开发人员计算机上使用Update-Database命令的-Script参数生成SQL脚本,然后可以在生产数据库上运行这些脚本。
http://msdn.microsoft.com/en-us/data/jj591621.aspx (请参阅获取SQL脚本部分)
你只是想自动更新数据库到最新版本何时何地运行(开发和生产)?
这可能不是一个好主意,除非您知道可以信任自动迁移并手动迁移数据库的非常简单的情况是不可行的。 请参阅此答案: https : //stackoverflow.com/a/15718190/2279059 。 如果你忽视这个警告,请继续阅读。
将以下内容添加到web.config
:
<entityFramework> <contexts> <context type="MyAssembly.MyContext, MyAssembly" disableDatabaseInitialization="false"> <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyAssembly.MyContext, MyAssembly], [MyAssembly.Migrations.Configuration, MyAssembly]], EntityFramework" /> </context> </contexts>
这可能看起来很可怕,但它基本上和下面的代码一样:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration>());
如果您没有使用web.config
,那么您也可以尝试将此代码放入Global.asax
。 我个人更喜欢configuration代码。
如果你希望你的configuration文件看起来更干净,你也可以从模板MigrateDatabaseToLatestVersion
类派生一个新的类,所以你不需要在你的web.cofig
文件中使用神秘的语法来传递types参数:
public class MyDatabaseInitializer : public MigrateDatabaseToLatestVersion<MyContext, Migrations.Configuration> {}
这样做是设置一个数据库初始化程序,它会自动将数据库更新到最新版本。
(来源和更多细节: http : //www.ralphlavelle.net/2012/09/entity-framework-code-first-webconfig.html )