如何找出ObjectStateManager中的实体多一次

时间:2013-02-12 14:21:26

标签: entity-framework objectstatemanager

您好我收到以下错误:

  

AcceptChanges无法继续,因为对象的键值发生冲突   与ObjectStateManager中的另一个对象。确保   在调用AcceptChanges之前,键值是唯一的。

现在我正在尝试解决这个问题,但我需要确定哪个实体给我带来了麻烦,所以我知道在哪里看。

我知道错误是什么,我知道如何解决它,但我不知道如何找出哪个实体是双重的。

1 个答案:

答案 0 :(得分:2)

您可以检查ObjectStateManager以获取所有已修改的实体。代码是这样的:

var lst = context.ObjectStateManager
              .GetObjectStateEntries(EntityState.Added |
                                     EntityState.Modified | 
                                     EntityState.Deleted);
var res = lst.GroupBy(c => c.EntityKey).Where(c=> c.Count() > 1);