我是实体框架的新手,我正在寻找一些方向来创建实体和相关的多对多关联实体之间的关系,并将它们插入到一个操作中。
我的EDMX中的相关实体:
参与者
ID
姓名
ParticipantCustomField
ParticipantID
CustomFieldID
值
的CustomField
ID
名称
我需要插入一个Participant
实体和许多ParticipantCustomField
个实体。相关的CustomField
实体在插入时已经在数据库中。
我有一个存储库创建方法,它接受Participant
和ParticipantCustomField
个对象的集合:
public Participant CreateParticipant(Participant participant, List<ParticipantCustomField> customFields)
{
// need to establish relationship here
entities.AddToParticipant(participant);
entities.SaveChanges();
return participant;
}
我尝试了几种方法,但无法弄清楚如何在插入之前将ParticipantCustomField
对象的集合与新的Participant
正确关联。我知道CustomFieldID
外键是在此方法之外设置的,但在插入ParticipantID
之前无法设置Participant
外键。
我想因为这是实体框架所以我不应该专注于“外键”,我认为这只是因为我的关联表有第三列,而是关系。
感谢您的帮助!
答案 0 :(得分:3)
您无需设置ParticipantCustomField.ParticipantId
。该框架将为您做到这一点。相反,你会做类似的事情:
foreach (var cf in customField)
{
participant.CustomFields.Add(cf);
}
entities.AddToParticipant(participant);
entities.SaveChanges();
return participant;
我在这里对你的映射做了一些假设,但是这应该给你一般的想法。