我的数据库中有两个包含相同列的表。我在一个表(名为 TB1)中有一个记录,我想使用 EF 将它“传输”到另一个表(名为 TB2)。
我对EF不是很熟悉,所以我的想法是在这个方向:
var testEntity = new TestEntities();
var data1 = testEntity.TB1.Find(id);
var data2 = new TB2();
// Pass all the properties from one object (data1) to another (data2)
testEntity.TB2.Add(data2);
testEntity.TB1.Remove(data1);
testEntity.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
但是,为了继续这个逻辑,我必须手动将所有属性从一个对象传递到另一个对象。并且它包含很多属性(大约 50 个)。
由于它们具有相同的属性,我真的认为必须有一种更简单的方法来执行这个过程,但我不知道如何。
有没有更简单的方法来“传输”这些数据?
实体框架具有处理复制对象属性的功能。请参阅https://msdn.microsoft.com/en-us/data/jj592677.aspx。
最简单的方法是使用CurrentValues.SetValues().
var testEntity = new TestEntities();
var data1 = testEntity.TB1.Find(id);
var data2 = new TB2();
data2.CurrentValues.SetValues(data1);
testEntity.TB2.Add(data2);
testEntity.TB1.Remove(data1);
testEntity.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
当使用从服务调用或 n 层应用程序中的客户端获取的值更新实体时,有时会使用此技术。请注意,使用的对象不必与实体具有相同的类型,只要它具有名称与实体名称匹配的属性即可。
| 归档时间: |
|
| 查看次数: |
8331 次 |
| 最近记录: |