2012-05-10 13 views
1

私は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()に例外が発生します。どんな助けも高度にアピシエートされます。

答えて

関連する問題