【问题标题】:Entity Framework Migration实体框架迁移
【发布时间】:2015-05-11 02:39:08
【问题描述】:

大家好,我正在为 EntityFramework 的迁移而苦苦挣扎,目前我已经启用了自动迁移。

我的软件是wpf- mvvm-ef code first SQL-server

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

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

我现在你正在发布我的应用程序的更新(在这个更新中改变了数据库的结构)并且这个更新只会做两台机器通过

            

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

他我自动更新db的结构。

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

我怎样才能避免这样做?

【问题讨论】:

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


    【解决方案1】:

    This MSDN post说怎么做db迁移。

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

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

     public Configuration()
     {
          AutomaticMigrationsEnabled = false;
     }
    

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

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

    【讨论】:

      【解决方案2】:

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

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

      如果我在 4 台电脑上安装了我的软件。 但是我一开始只升级了两台电脑(所以我更新了数据库的架构)。 其他两个都关了。 如果几天后,我打开另外两台电脑(未升级的)并且我不更新它们,只需运行软件检测到数据库中的更改并返回数据库的旧架构。

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

      我希望更清楚。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 2019-06-24
      • 2020-06-21
      相关资源
      最近更新 更多