[英]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.