繁体   English   中英

如何正确地促进实体框架代码优先迁移到生产中?

[英]how to properly promote Entity Framework code-first migrations into production?

在我的ASP.NET EF 6应用中,我具有以下配置:

internal sealed class Configuration : DbMigrationsConfiguration<Gcim.Management.Module.BusinessObjects.ManagementDbContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }

        protected override void Seed(Gcim.Management.Module.BusinessObjects.ManagementDbContext context)
        {

        }
    }

在我的项目中,我启用了EF代码优先迁移。 我能够从VS Package Manager提示符下运行添加迁移以及更新数据库。 但是,当我的实体更改时,添加迁移和更新数据库仅在开发环境中有效。 当我发布ASP.NET项目时,将其安装在生产IIS上并运行,仍然会出现此错误:

The model backing the 'ManagementDbContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

为了在生产中强制进行增量DB更改而又不丢失数据,我还需要做什么?

您可以执行对给定环境中给定的迁移文件(在这种情况下,生产环境)使用migrate.exe应用包括作为实体框架的NuGet包的一部分。 在发布Web应用程序之前,您需要在生产环境中执行最新的迁移-完成此操作后,新部署的应用程序将正常运行。

通过指定包含迁移类以及可能的特定迁移的连接字符串和.dll来执行此操作。 例如:

Migrate.exe Gcim.Management.Module.BusinessObjects.dll /connectionString="Data Source=[YourProductionDatabase];Initial Catalog=[YourTable];Integrated Security=SSPI" /connectionProviderName="System.Data.SqlClient" /targetMigration="[NameofYourMigration]"

可以在以下位置找到有关migrate.exe文档: https : //msdn.microsoft.com/zh-cn/data/jj618307.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM