实体框架 - 多对多关系 - 用id添加引用

时间:2014-06-11 12:25:15

标签: entity-framework asp.net-mvc-3 model-view-controller ef-code-first code-first

我使用实体框架,我有2对象之间的多对多关系。

让我们说上课"问题"和class" tag",当我创建一个包含许多标签的新问题时,我在viewmodel中有所选标签的列表。我需要创建问题,以便将这些标记添加到问题中,但我不想重新加载所有标记。

我的意思是:

foreach(var id in tagUIds)
 {Tag tag = gettag(id);
 question.tags.add(tag); }

效率不高,是否有办法避免加载标记并仅通过标记的id添加引用?

由于

1 个答案:

答案 0 :(得分:0)

您可以创建中间实体TagToQuestionLink,将其映射到多对多表,并使用此实体的集合而不是标签集合:

public class TagToQuestionLink
{    
    TagId{get;set;}
    QuestionId{get;set;}
}

然后你可以使用:

foreach(var id in tagUIds)
{
   var tagLink = new TagToQuestionLink{QuestionId = question.Id, TagId = id};
   question.tags.add(tagLink); 
}

不要忘记,在此解决方案中,问题标题应为ICollection<TagToQuestionLink>