C# 使用基于文件系统的发布时的代码优先迁移
我对这个比较陌生。我正在尝试将asp.net web应用程序发布到生产IIS服务器。在VisualStudio中,我选择基于文件系统的发布,因为该服务器不支持web部署 我对数据库使用代码优先迁移。只要这是第一次,或者如果我删除了所有表,部署到生产环境就可以正常工作。但是,如果我有包含生产数据的现有表,我会得到以下错误- “自创建数据库以来,支持AppultDbValue'上下文的模型发生了变化。请考虑使用代码第一迁移来更新数据库” 如何在模型更改时启用自动模式更新?我已将我的Configuration.cs“AutomaticMigrationsEnabled”设置为true。我需要在global.asax或Web.Config中设置一些内容吗?我错过了什么 在本地服务器上,我可以运行更新数据库。当我推送模型更新时,如何在生产中自动执行此操作C# 使用基于文件系统的发布时的代码优先迁移,c#,asp.net,web-deployment,entity-framework-migrations,C#,Asp.net,Web Deployment,Entity Framework Migrations,我对这个比较陌生。我正在尝试将asp.net web应用程序发布到生产IIS服务器。在VisualStudio中,我选择基于文件系统的发布,因为该服务器不支持web部署 我对数据库使用代码优先迁移。只要这是第一次,或者如果我删除了所有表,部署到生产环境就可以正常工作。但是,如果我有包含生产数据的现有表,我会得到以下错误- “自创建数据库以来,支持AppultDbValue'上下文的模型发生了变化。请考虑使用代码第一迁移来更新数据库” 如何在模型更改时启用自动模式更新?我已将我的Configura
更新: 通过遵循中的步骤,我能够消除生产中的错误 但是,我不确定这是否是解决问题的最佳方法。或者,如果我想让生产部门在每次应用程序启动时都继续运行这条生产线
Database.SetInitializer<ApplicationDbContext>(new
MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
Database.SetInitializer(新的
MigrateDatabaseToLatestVersion());
当您使用MigratedatabaseTolatesVersion时,它确实会为您运行迁移。因此,您肯定需要使用或生成脚本(updatedatabase-script
)
这些将在您的文件夹中运行迁移。问题是您的配置中有AutomaticMigrationsEnabled=true
。这会告诉EF自动更新数据库,而不会创建基于代码的迁移文件
有两种解决方案。首先,您可以在部署之前添加手动迁移(addmigration MyMigrationName
),或者您可以将初始值设定项切换到类似于CreateDatabaseIfNotExists
的位置,然后在代码中调用迁移,如上所示
有关详细说明,请参阅。当您使用MigratedatabasetolatesVersion时,它确实会为您运行迁移。因此,您肯定需要使用或生成脚本(
updatedatabase-script
)
这些将在您的文件夹中运行迁移。问题是您的配置中有AutomaticMigrationsEnabled=true
。这会告诉EF自动更新数据库,而不会创建基于代码的迁移文件
有两种解决方案。首先,您可以在部署之前添加手动迁移(addmigration MyMigrationName
),或者您可以将初始值设定项切换到类似于CreateDatabaseIfNotExists
的位置,然后在代码中调用迁移,如上所示
有关详细说明,请参阅