繁体   English   中英

实体框架迁移

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

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