如何使用Entity Framework将数据添加到多对多关系? 当我尝试添加一篇带有相关类别的文章时(参见图表)我遇到了问题,但问题是类别表中已存在类别,我不需要再次创建它们。当我使用EF方法:_ctx.Articles.Add(newArticle)时,它会生成插入句子到类别表并复制我的行。基本上,我只需要将数据添加到Article表和引用表CategoryArticles。添加方法,向Article表添加行(ok)加上Category表(错误的步骤)加上CategoryArticles表(ok)。任何想法如何避免再次在类别表中添加这些行。感谢任何帮助。
编辑:我正在使用AUTOMAPER来填充类别的阵列......我不会因为我正在创建新对象而做这件事。这是代码:
List<CategoriesViewModel> categoriesViewModel = article.CategoriesViewModel.Where(c => c.IsSelected).ToList();
List<Category> selectedCategories = Mapper.Map<List<CategoriesViewModel>, List<Category>>(categoriesViewModel);
newArticle.Categories = selectedCategories;
_ctx.Articles.Add(newArticle)
这是关系模型
答案 0 :(得分:1)
感谢@Robert McKee,解决问题的方法是直接从数据库中获取类别,这样实体框架在保存主实体时会自动识别这些类别,避免重复。
答案 1 :(得分:0)
多对多关系隐藏了EF中的交叉引用表。关系模型根本不应显示CategoryArticles表。 Articles表应具有“Categories”导航属性。只需添加一个类别,然后保存即可。