使用基于文件系统的发布时代码优先迁移
Code first migrations when using Filesystem based publish
我对此比较陌生。我正在尝试将我的 asp.net Web 应用程序发布到生产 IIS 服务器。在 visual studio 我 select 基于文件系统的发布中,因为该服务器不支持 Web 部署。
我为我的数据库使用代码优先迁移。只要是第一次,或者如果我删除所有表,部署到生产环境就可以正常工作。但是,如果我有包含生产数据的现有表,我会收到以下错误 -
"The model backing the 'ApplicationDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database"
如何在模型更改时启用自动模式更新?我将 "AutomaticMigrationsEnabled" 我的 Configuration.cs 设置为 true。我需要在我的 global.asax 或 Web.Config 中设置什么吗?我错过了什么?
在我的本地服务器上,我可以 运行 更新数据库。每当我推送模型更新时,如何在生产中自动执行此操作?
更新:
按照 Using Entity Framework (code first) migrations in production
中的步骤,我能够消除生产中的错误
但是我不确定这是否是解决问题的最佳方法。或者,如果我希望生产在每次应用程序启动时都保持 运行ning 这一行。
Database.SetInitializer<ApplicationDbContext>(new
MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
当您使用 MigrateDatabaseToLatestVersion 时,它确实会 运行 为您迁移。因此,您肯定需要那个或其中一种替代方法,例如使用 DbMigrator in code 或生成脚本 (update-database -Script
)。
这些将 运行 迁移到您的文件夹中。问题是您的配置中有 AutomaticMigrationsEnabled = true
。这告诉 EF 只自动更新您的数据库,而不创建基于代码的迁移文件。
有几个解决方案。首先,您可以在部署之前添加手动迁移 (add-migration MyMigrationName
),或者您可以将初始化程序切换为 CreateDatabaseIfNotExists
之类的东西,然后在代码中调用迁移,如上所示。
有关详细说明,请参阅 here。
我对此比较陌生。我正在尝试将我的 asp.net Web 应用程序发布到生产 IIS 服务器。在 visual studio 我 select 基于文件系统的发布中,因为该服务器不支持 Web 部署。
我为我的数据库使用代码优先迁移。只要是第一次,或者如果我删除所有表,部署到生产环境就可以正常工作。但是,如果我有包含生产数据的现有表,我会收到以下错误 -
"The model backing the 'ApplicationDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database"
如何在模型更改时启用自动模式更新?我将 "AutomaticMigrationsEnabled" 我的 Configuration.cs 设置为 true。我需要在我的 global.asax 或 Web.Config 中设置什么吗?我错过了什么?
在我的本地服务器上,我可以 运行 更新数据库。每当我推送模型更新时,如何在生产中自动执行此操作?
更新: 按照 Using Entity Framework (code first) migrations in production
中的步骤,我能够消除生产中的错误但是我不确定这是否是解决问题的最佳方法。或者,如果我希望生产在每次应用程序启动时都保持 运行ning 这一行。
Database.SetInitializer<ApplicationDbContext>(new
MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>());
当您使用 MigrateDatabaseToLatestVersion 时,它确实会 运行 为您迁移。因此,您肯定需要那个或其中一种替代方法,例如使用 DbMigrator in code 或生成脚本 (update-database -Script
)。
这些将 运行 迁移到您的文件夹中。问题是您的配置中有 AutomaticMigrationsEnabled = true
。这告诉 EF 只自动更新您的数据库,而不创建基于代码的迁移文件。
有几个解决方案。首先,您可以在部署之前添加手动迁移 (add-migration MyMigrationName
),或者您可以将初始化程序切换为 CreateDatabaseIfNotExists
之类的东西,然后在代码中调用迁移,如上所示。
有关详细说明,请参阅 here。