用关系克隆EF6记录

时间:2016-05-11 14:31:24

标签: c# entity-framework

我从EF6获得

的记录
Context
.MyRepo
.Include(p => p.MyRelation)
.AsNoTracking()
.SingleOrDefault(p => p.Uuid == recordUuid);

然后我尝试插入记录zith的副本

myRecord.Uuid = Guid.NewGuid();
myRecord.EntityKey = new System.Data.EntityKey("modelqualifiedname", "Id", 1726526);

Context.MyRepo.AddObject(myRecord);
Context.SaveChanges();

但是这条消息失败了

  

“ObjectStateManager中已存在具有相同键的对象。   ObjectStateManager无法跟踪具有相同对象的多个对象   键“。

我尝试将EntityKey设置为null,就像它在新记录中一样;但它没有帮助。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

此对象已由EF跟踪。

您必须修改其密钥或将其状态更改为“修改”。

Context.MyRepo.Entry(myRecord).State = EntityState.Modified;

然后保存。

答案 1 :(得分:0)

我认为你因为子对象而得到错误,你应该尝试为每个子对象设置一个新的密钥。