【发布时间】: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分,我也愿意增加赏金
标签: entity-framework entity-framework-migrations