![](/img/trans.png)
[英]How to automatically run Code First Migrations on DB when using WebDeploy to publish web app
[英]Code first migrations when using Filesystem based publish
我对此比较陌生。 我试图将我的asp.net Web应用程序发布到生产IIS服务器。 在visual studio中,我选择基于Filesystem的发布,因为该服务器不支持Web部署。
我为我的数据库使用Code First Migrations。 只要是第一次,或者如果我放弃所有表,那么生产的部署工作正常。 但是,如果我有现有的生产数据表,我会得到以下错误 -
“自创建数据库以来,支持'ApplicationDbContext'上下文的模型已发生更改。请考虑使用Code First Migrations更新数据库”
我的模型更改时如何启用自动架构更新? 我将“AutomaticMigrationsEnabled”我的Configuration.cs设置为true。 我需要在global.asax或Web.Config中设置一些内容吗? 我错过了什么?
在我的本地服务器上,我可以运行Update-Database。 每当我推送模型更新时,如何在生产中自动执行此操作?
更新:通过遵循生产中使用实体框架(代码优先)迁移中的步骤,我能够摆脱生产中的错误
但是我不确定这是否是解决问题的最佳方法。 或者,如果我希望每次应用程序启动时生产都继续运行此行。
Database.SetInitializer<ApplicationDbContext>(new
MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
当您使用MigrateDatabaseToLatestVersion时,它确实会为您运行迁移。 所以你肯定需要这个或其中一个替代方案,比如在代码中使用DbMigrator或生成脚本( update-database -Script
)。
这些将在您的文件夹中运行迁移。 问题是您的配置中有AutomaticMigrationsEnabled = true
。 这告诉EF只是自动更新数据库,而不是创建基于代码的迁移文件。
有几种解决方案。 首先,您可以在部署之前添加手动迁移( add-migration MyMigrationName
),也可以将初始化程序切换为类似CreateDatabaseIfNotExists
,然后在代码中调用迁移,如上所示。
请参阅此处获取详细说明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.