我的目标是复制现有实体,稍加修改,然后插入修改后的版本。
我尝试了两种似乎都有效的方法:
var thing = context.Things.Where(x => x.SomeID == someid).AsNoTracking().Single();
thing.AnotherID = 1234;
context.Things.AddObject(thing);
context.SaveChanges();
var thing = context.Things.Where(x => x.SomeID == someid).Single();
context.Detach(thing);
thing.AnotherID = 1234;
context.Things.AddObject(thing);
context.SaveChanges();
据我所知,他们都在实现我的目标。其中一个比另一个好,还是它们都同样好(或错误!?)
答案 0 :(得分:18)
第一个版本更好,我更喜欢它,因为
Detach
的实体本身。由于EF不允许对象图混合了附加和分离的实体。