我正在尝试使用 Visual Studio Team Services 构建/发布我的 MVC 应用程序到 Azure。
我一直在关注tutorials here
目前,我可以将更改推送到存储库,然后触发构建,然后我可以手动选择要发布的构建,使用发布定义中的设置自定义 web.config 文件,并将站点推送到所需的插槽Azure Web 应用程序。
现在,我的问题出在数据库上。直接从 Visual Studio 发布时,可以选择运行代码优先迁移。它创建/更改表,然后运行种子方法。如果您只是将网站部署到一个 Web 应用程序,那么这是很好的选择,但如果您要将其多次部署到不同的实例,因此想要使用 VS Team Services,则这不是很好。
我看到发布定义中有运行 bacpac 或 sql 文件的选项,但我想这需要为每个构建手动创建这些文件。
我确信我错过了一些东西。其他人如何在构建/发布中包含模型/数据库更改。
如果有人能告诉我应该如何执行此操作,那就太好了,因为 Microsoft 文档似乎缺乏这方面的内容。
最佳答案
您应该能够通过添加以下代码来启用数据库迁移:
在 Startup.cs 文件的 Configuration 方法中,在开头添加以下行:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DefaultContext, Configuration>());
此外,在您的 Migrations/Configuration.cs 文件中,确保将以下行添加到您的 Configuration 方法中:
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true; //either way works
使用这些选项使我能够在过去运行数据库迁移。
另一种选择是设置 web.config 值并以这种方式手动运行迁移,具体取决于您运行的 MVC 版本。我有一个较旧的项目,我将此代码放入应用程序启动中的 Global.asax.cs 文件中:
if (bool.Parse(ConfigurationManager.AppSettings["MigrateDatabaseToLatestVersion"]))
{
// Migrations to update the database.
Database.SetInitializer<ApplicationDbContext>(null);
var configuration = new Configuration();
var migrator = new DbMigrator(configuration);
migrator.Update();
Log.Debug("Database migrations complete.");
}
关于asp.net-mvc - 随 Visual Studio Team Services 一起发布的 Entity Framework 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35896900/