[英]Entity Framework Migration
大家好,我为EntityFramework的迁移而苦苦挣扎,目前,我已经启用了自动迁移。
我的软件是wpf- mvvm-ef代码优先SQL Server
但是我想知道如何处理特殊情况。
我将软件安装在所有四台机器上,读取服务器上的数据库。
现在,您正在发布我的应用程序的更新(此更新已更改了数据库的结构),并且此更新仅通过
Database.SetInitializer (new MigrateDatabaseToLatestVersion <SednaContext, Configuration> ());
他,我会自动更新db的结构。
但是现在,如果我从没有更新他的其他两台机器上运行软件,我会自动返回db的结构(返回到旧的数据库,因为在这两台机器上我没有安装更新)
如何避免所有这些?
这个MSDN帖子说了如何做数据库迁移。
首先,在Package Manager Console
运行Enable-Migrations
命令。 它将在您的项目上添加一个Migrations
文件夹,如下图。
注意:在Package Manager Console
, Default project
应该是包含那些模型类的项目。
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
如果将AutomaticMigrationsEnabled
设置为true
,则在进行新的数据库迁移时,不需要在Package Manager Console
执行Add-Migration
。 它将自动升级。 但我默认将其设置为false
。 因此,每次修改模型时,都需要执行Add-Migration
,它将在Migrations
文件夹中生成一个类。 该类具有2个函数, Up()
和Down()
。 Up()
包含有关将数据库升级到该版本的代码,而Down()
描述了如何将新数据库降级到较旧的版本。
希望这些信息能对您有所帮助。
感谢您的答复,我已经尝试过这种方法,同时尝试了自动和手动方法。
我的问题是另一个实体框架如何识别最近需要更新的数据库?
如果我在4 pc中安装了我的软件。 但是一开始我只升级了两台PC(所以我更新了数据库的架构)。 其他两个关闭。 如果过了几天,我又打开了另外两台PC(未升级),并且不更新它们,只需运行该软件即可检测到db中的更改,并返回db的旧模式。
为此,我试图了解如何捕获正在更新的数据库模式版本。
我希望更加清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.