大家好,我正在努力迁移EntityFramework,现在,我启用了自动化。
我的软件是wpf-mvvm-ef代码第一个SQL-server
但我想知道如何处理特定情况。
我在所有四台机器上安装我的软件,在服务器上读取数据库。
我现在发布了我的应用程序更新(在此更新中已更改了db的结构),此更新只会通过
执行两台计算机
Database.SetInitializer (new MigrateDatabaseToLatestVersion <SednaContext, Configuration> ());
他我会自动更新db的结构。
但是现在如果我从另外两台没有更新的机器上运行我的软件,我会自动返回db的结构(返回旧的,因为在这两台机器上我还没有安装更新)
我怎样才能避免这么做?
答案 0 :(得分:1)
This MSDN post说如何进行数据库迁移。
首先,在Enable-Migrations
中运行Package Manager Console
命令。它将在您的项目中添加Migrations
文件夹,如下图所示。
注意:在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的旧架构。
为此,我试图了解如何捕获正在更新的数据库模式的版本。
我希望更清楚。