我来自 asp.net Web Forms 切换到 MVC 和实体框架代码优先方法。我有个问题。如何设置我的环境以部署到生产环境?
我正在使用 Visual Studio 2012 并部署一个 Web 部署包。在本地,我有 SQL Express,在生产中,我有 SQL Server 2008。
我想要的是在我的电脑上本地开发一个测试,并不时使用 web 部署包将我的解决方案部署到生产中。我不想在生产系统中运行迁移,而是想从 Visual Studio 生成脚本,然后我可以将其附加到生产 SQL。
我尝试过了:
- 在 dev 中创建初始迁移。
- 本地更新数据库
- 生成脚本,update-database -script -sourcemigration:InitialCreate
- 在生产中应用此脚本
- 将应用程序部署到生产环境
这是正确的方法吗?我的迁移将在本地运行,它们会不会因为我的迁移代码而在我部署时不在生产中?
在 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();
}
}
}