2016-10-22 2 views
0

Entity Frameworkを初めて使用しています。私は、PollsCandidatesという1つの関係を持つ2つのテーブルを持っています。Entity Frameworkを使用して複数のオブジェクトを外部テーブルに追加する方法

投票に複数の候補を追加します。

この

は私のコードです:

public bool InsertPolls(PollModel _polls) 
{  
     polls = new Poll(); 
     candidates = new candidate(); 

     polls.Name = _polls.name; 
     polls.startDate = startDate; 
     polls.endDate = endDate; 
     polls.Type = _polls.pollType; 

     foreach (var candidatesID in _polls.candidateID) 
     { 
      candidates.Person_ID = candidatesID; 
      candidates.Poll = polls; 
      _dbContext.candidates.Add(candidates); 
      _dbContext.SaveChanges(); 
     } 
} 

しかし、これは「System.InvalidOperationException」種類の例外がEntityFramework.dllで発生したが、ユーザーコードの追加情報に処理されなかった

例外をスローします:プロパティ 'Person_ID'は、オブジェクトのキー情報の一部であり、変更することはできません。

誰でもこの手伝いできますか? ありがとうございました!

+0

であるあなたは、コードファーストまたはDBファーストを使用していますか? –

+0

私はDBを最初に使用しています –

+0

どのラインで例外が発生していますか? – Oluwafemi

答えて

0

救済のためのコード

candidates = new candidate(); 

を流れるループために最初の行に入れ、この問題は、候補=新しい候補者を(削除)。コードの先頭から。あなたがコードの先頭に追加しているので、 ループために流れるコードがあまりにも

candidates.Poll = polls; 

を削除します。

これは最終的なコード

public bool InsertPolls(PollModel _polls) 
{  
    polls = new Poll(); 

    polls.Name = _polls.name; 
    polls.startDate = startDate; 
    polls.endDate = endDate; 
    polls.Type = _polls.pollType; 
    _dbContext.Polls.Add(polls); 
    _dbContext.SaveChanges(); 

    foreach (var candidatesID in _polls.candidateID) 
    { 
     candidates = new candidate(); 
     candidates.Person_ID = candidatesID; 
     _dbContext.candidates.Add(candidates); 
     _dbContext.SaveChanges(); 
    } 
} 
+0

うん、それは動作します。 ThnQ –

関連する問題