私はEntityFrameworkコードの最初のアプローチを使用しています。EF 4.1を使用した更新時の例外
private void SaveCandidates(Container container, List<Candidate> candidates, bool isInsert)
{
var alreadyExists = false;
foreach (candidate matchingOrderCandidate in candidates)
{
alreadyExists = container.Candidates.Any(i => i.Id == candidate.Id);
if (!alreadyExists && isInsert)
{
container.Entry(candidate).State = EntityState.Added;
}
if (alreadyExists && !isInsert)
{
container.Entry(candidate).State = EntityState.Modified;
}
}
container.SaveChanges();
}
しかし、更新の場合には、[のSystem.InvalidOperationException] が既にObjectStateManagerに存在する同じキーを持つオブジェクト=例外
をスロー:これは、挿入および更新するための方法です。 ObjectStateManagerは、同じキーを持つ複数のオブジェクトを追跡できません。
私は最初に候補を挿入し、次にいくつかの自動プロセスが実行され、このメソッドは更新のために呼び出され、更新の場合はcontainer.SaveChanges()
に例外が発生します。どんな助けも高度にアピシエートされます。