Entity Framework 迁移

Entity Framework Migration

大家好,我正在努力迁移 EntityFramework,目前,我已经启用了自动迁移。

我的软件是wpf-mvvm-ef代码优先SQL-server

但我想知道如何处理特定情况。

我在所有四台机器上安装我的软件读取服务器上的数据库。

我现在要发布我的应用程序的更新(在此更新中更改了数据库的结构)并且此更新将仅通过

对两台机器进行更新

Database.SetInitializer (new MigrateDatabaseToLatestVersion <SednaContext, Configuration> ());

他我自动更新db的结构

但是现在,如果我 运行 我的软件来自其他两台没有更新他的机器,我会自动 returns db 的结构(返回到旧的,因为在这两台机器上我有未安装更新)

我怎样才能避免做这一切?

This MSDN post说了如何做数据库迁移。

首先,运行 Package Manager Console 中的 Enable-Migrations 命令。它将在您的项目中添加一个 Migrations 文件夹,如下图所示。

注意:在Package Manager Console中,Default project应该是包含那些模型class的项目。

 public Configuration()
 {
      AutomaticMigrationsEnabled = false;
 }

如果你设置AutomaticMigrationsEnabledtrue,那么当新的数据库迁移到来时,你不需要在Package Manager Console中执行Add-Migration。它会自动升级。但是我默认设置为false。所以每次我修改我的模型,我都需要执行Add-Migration,它会在Migrations文件夹中生成一个class。 class 有两个函数,Up()Down()Up()包含升级数据库到版本的代码,Down()描述如何将新版本降级到旧版本。

希望这些信息对您有所帮助。

感谢您的回复, 这个方法我已经试过了,自动和手动都试过了

我的问题是另一个,entity framework如何识别最近需要更新数据库?

如果我在 4 台电脑上安装了我的软件。 但是我一开始只升级了两台电脑(所以我更新了数据库的模式)。 另外两个没电了。 如果几天后,我打开另外两台 PC(未升级的)并且我没有更新它们,只是 运行 软件检测到数据库中的变化并且它 return 的旧模式分贝

为此,我试图了解如何捕获正在更新的数据库架构版本。

希望说得更清楚