从asp.net webforms切换到mvc和实体框架代码第一种方法我现在有一个问题。如何设置环境以部署到生产环境?
我正在使用Visual Studio 2012并部署Web部署包。本地我有SQL Express,在生产中我有SQL Server 2008。
我想要的是在我的电脑上本地开发测试,并不时使用Web部署包将我的解决方案部署到生产中。我不想在生产系统中运行迁移,而是想从visual studio生成脚本,然后我可以附加到生产SQL。
我试图:
这是正确的做法吗?那些将在本地运行的迁移,由于我的迁移代码,它们在部署时是否会生产?
在global.asax
中Migrator.RunMigrations();
其中RunMigrations是自定义Migrator类中的静态方法,如此
public class Migrator
{
public static void RunMigrations()
{
var migrator = new Configuration();
var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(migrator);
if (dbMigrator.GetPendingMigrations().Any())
{
dbMigrator.Update();
}
}
}
答案 0 :(得分:2)
您可以使用Web Setup Project(对于安装需要MSI自定义操作):
更新数据库的实际工作可以通过migrate.exe工具完成。为了使MSI包正确运行,结果证明是一个挑战。我首先在安装包中包含migrate.exe,以便将它与系统的程序集一起部署到bin目录。支持在Web安装项目中将exe文件作为自定义操作运行。很遗憾,除非将工作目录设置为bin目录,否则无法使migrate.exe工作。默认情况下,自定义操作的工作目录为c:\ windows \ system32。为了解决这个问题,我们使用了一个小的vb脚本。
http://coding.abel.nu/2012/04/update-database-msi-custom-action/
<强>更新强>
答案 1 :(得分:0)
回滚所有迁移
update-database -TargetMigration:0
update-database -Script
https://cpratt.co/migrating-production-database-with-entity-framework-code-first/