实体框架迁移

时间:2015-03-09 19:44:11

标签: entity-framework ef-code-first database-migration ef-migrations

大家好,我正在努力迁移EntityFramework,现在,我启用了自动化。

我的软件是wpf-mvvm-ef代码第一个SQL-server

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

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

我现在发布了我的应用程序更新(在此更新中已更改了db的结构),此更新只会通过

执行两台计算机

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

他我会自动更新db的结构。

但是现在如果我从另外两台没有更新的机器上运行我的软件,我会自动返回db的结构(返回旧的,因为在这两台机器上我还没有安装更新)

我怎样才能避免这么做?

2 个答案:

答案 0 :(得分:1)

This MSDN post说如何进行数据库迁移。

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

DB migration

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

 public Configuration()
 {
      AutomaticMigrationsEnabled = false;
 }

如果将AutomaticMigrationsEnabled设置为true,那么当新的数据库迁移到来时,您无需在Add-Migration中执行Package Manager Console。它会自动升级。但我默认将其设置为false。因此,每次修改模型时,我都需要执行Add-Migration,它将在Migrations文件夹中生成一个类。该类有2个函数Up()Down()Up()包含有关将数据库升级到版本的代码,Down()介绍了如何将新版本降级到旧版本。

希望这些信息可以帮到你。

答案 1 :(得分:0)

感谢您的回复, 我已经尝试过这种方法,我尝试过自动和手动。

我的问题是另一个实体框架如何识别最近需要更新数据库?

如果我在4个电脑上安装了我的软件。 但是我在开始时只升级了两台pc(所以我更新了db的架构)。 其他两个都没了。 如果几天之后,我转动另外两台PC(那些未升级的)并且我不更新它们,只需运行软件检测到db中的更改并返回db的旧架构。

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

我希望更清楚。