2016-10-22 52 views
0

我是實體框架的新手。我有兩個表,分別叫做PollsCandidates,它們有一對多的關係。如何使用實體框架將多個對象添加到外部表

我想添加多個候選人投票。

這是我的代碼:

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

我正在使用數據庫第一個 –

+0

你在哪一行得到異常? – Oluwafemi

回答

0

爲補救把這個問題在第一線在for循環流動代碼

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 –