实体框架迁移 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的主要内容,如果未能解决你的问题,请参考以下文章