实体框架迁移 API

Posted

技术标签:

【中文标题】实体框架迁移 API【英文标题】:Entity Framework Migration API 【发布时间】:2017-08-09 19:24:46 【问题描述】:

您好,我在实体框架之上创建了一个数据同步项目。 该框架在某种程度上独立于模式。 我想让它更能容忍模式的变化,即使是目前考虑的重大变化。 为了实现这一点,我必须进入 ef 迁移引擎,并且必须生成一个类似

的命令
add-transformation 

它将检测更改并创建转换。 我查看了 ef 6 的源代码,但找不到合适的起点。 任何帮助,将不胜感激。

编辑 1 :- 回答 cmets 中收到的问题

    代码优先方法

    范围: 数据更改将由迁移处理,因此无需合并更改。 我需要的是一种执行像add-transformation 这样的命令的方法,它会创建一个新的转换,比如一个新的迁移。所以通常可以说我有一个数据库模型(域模型),比如

    A 级 公共 int 一个 get;放; 公共 int b get;放;

然后我将类更改为结构

class A 

 public int a get; set;
 public int b get; set;
 public int c get; set;

然后我运行add-tranformation ClassChangesA 我需要的代码应该 1. 检测变化 2. 生成类似迁移类的类。例如。

class Transformation_112334_ClassChangesA

 public A Up(OldA model)
   //Property C added
 
 public OldA Down(A model)
   //Property C removed
 

【问题讨论】:

假设您的方法是代码优先,我建议您阅读 MSDN 文章 msdn.microsoft.com/en-us/library/jj591621(v=vs.113).aspx 第一个问题 Code first 还是 DB First 方法?第二个问题,关于“范围”您的数据同步应用程序应该做什么?一种。忽略更改(添加字段?添加表格?)或 b。还复制新更改(字段或什么?)中包含的数据?第三个问题,你可以在有人“扩展”数据库后重新编译你的同步应用程序吗? @bubi - 我已经通过编辑答案回答了你的问题。请看。 如果有人愿意回答问题来获得100分,我也愿意增加赏金 【参考方案1】:

我相信您正在寻找的命令是 add-migration migration_name 然后您可以使用命令 update-database 更新您的数据库,这是在实体框架中使用代码优先迁移的方法。

【讨论】:

以上是关于实体框架迁移 API的主要内容,如果未能解决你的问题,请参考以下文章

可以使用实体框架迁移将 DateTime 字段默认为 GETDATE() 吗?

独立于模式的实体框架代码优先迁移

实体框架迁移 - 如何创建单元测试以确保迁移模型是最新的?

实体框架迁移:序列包含多个匹配元素

在实体框架核心中合并迁移

实体框架迁移 NuGet 错误