实体框架:创建和插入多对多关系

时间:2009-12-10 05:28:04

标签: entity-framework

我是实体框架的新手,我正在寻找一些方向来创建实体和相关的多对多关联实体之间的关系,并将它们插入到一个操作中。

我的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外键是在此方法之外设置的,但在插入ParticipantID之前无法设置Participant外键。

我想因为这是实体框架所以我不应该专注于“外键”,我认为这只是因为我的关联表有第三列,而是关系。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您无需设置ParticipantCustomField.ParticipantId。该框架将为您做到这一点。相反,你会做类似的事情:

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

我在这里对你的映射做了一些假设,但是这应该给你一般的想法。