我使用实体框架,我有2对象之间的多对多关系。
让我们说上课"问题"和class" tag",当我创建一个包含许多标签的新问题时,我在viewmodel中有所选标签的列表。我需要创建问题,以便将这些标记添加到问题中,但我不想重新加载所有标记。
我的意思是:
foreach(var id in tagUIds)
{Tag tag = gettag(id);
question.tags.add(tag); }
效率不高,是否有办法避免加载标记并仅通过标记的id添加引用?
由于
答案 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>
。