2009-12-10 122 views
4

我是實體框架的新手,正在尋找創建實體和相關的多對多關聯實體之間的關係並將它們插入到一個操作中的方向。實體框架:創建並插入多對多關係

在我的EDMX有關單位:

參與者
ID
名稱

ParticipantCustomField
ParticipantID
CustomFieldID
價值

的CustomField
ID
名稱

我需要插入一個Participant實體和許多ParticipantCustomField實體。在插入時,相關的CustomField實體已經在數據庫中。

我有一個存儲庫中創建,它接受一個ParticipantParticipantCustomField對象的集合方法:

public Participant CreateParticipant(Participant participant, List<ParticipantCustomField> customFields) 
{ 
    // need to establish relationship here 

    entities.AddToParticipant(participant); 
    entities.SaveChanges(); 
    return participant; 
} 

我嘗試了好幾種方法,但無法弄清楚如何正確關聯ParticipantCustomField對象的集合與新Participant在插入之前。我知道CustomFieldID外鍵,因爲它是在此方法之外設置的,但在插入Participant之前,不能設置外鍵ParticipantID

我想因爲這是實體框架我不應該專注於「外鍵」,我認爲這只是因爲我的關聯表有第三列,但關係。

感謝您的幫助!

回答

3

您無需設置ParticipantCustomField.ParticipantId。該框架將爲你做到這一點。相反,你會這樣做:

foreach (var cf in customField) 
{ 
    participant.CustomFields.Add(cf); 
} 
entities.AddToParticipant(participant); 
entities.SaveChanges(); 
return participant; 

我對這裏的映射做出了一些推測,但是這應該給你一個總體思路。

+0

謝謝,這讓我走上了正軌。我過於複雜的事情。 – 2009-12-10 19:43:21