Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用基于文件系统的发布时的代码优先迁移_C#_Asp.net_Web Deployment_Entity Framework Migrations - Fatal编程技术网

C# 使用基于文件系统的发布时的代码优先迁移

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

我对这个比较陌生。我正在尝试将asp.net web应用程序发布到生产IIS服务器。在VisualStudio中,我选择基于文件系统的发布,因为该服务器不支持web部署

我对数据库使用代码优先迁移。只要这是第一次,或者如果我删除了所有表,部署到生产环境就可以正常工作。但是,如果我有包含生产数据的现有表,我会得到以下错误-

“自创建数据库以来,支持AppultDbValue'上下文的模型发生了变化。请考虑使用代码第一迁移来更新数据库”

如何在模型更改时启用自动模式更新?我已将我的Configuration.cs“AutomaticMigrationsEnabled”设置为true。我需要在global.asax或Web.Config中设置一些内容吗?我错过了什么

在本地服务器上,我可以运行更新数据库。当我推送模型更新时,如何在生产中自动执行此操作


更新: 通过遵循中的步骤,我能够消除生产中的错误

但是,我不确定这是否是解决问题的最佳方法。或者,如果我想让生产部门在每次应用程序启动时都继续运行这条生产线

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
的位置,然后在代码中调用迁移,如上所示

有关详细说明,请参阅