1

こんにちは、次のエラーが表示されます。

オブジェクトのキー値が ObjectStateManager 内の別のオブジェクトと競合するため、AcceptChanges を続行できません。AcceptChanges を呼び出す前に、キー値が一意であることを確認してください。

今、私はそれを修正しようとしていますが、問題を引き起こしているエンティティを特定する必要があるので、どこを見ればよいかがわかります。

私はエラーが何であるかを知っており、それを解決する方法を知っていますが、どのエンティティが二重であるかを見つける方法がわかりません.

4

1 に答える 1

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);
于 2013-02-12T14:35:48.133 に答える