使用 Entity Framework 将数据添加到多对多关系

Add data to a many-to-many relationship using Entity Framework

如何使用 Entity Framework 将数据添加到多对多关系? 当我尝试添加一篇文章及其相关类别时出现问题(见图),但问题是这些类别已经存在于类别 Table 中,我不需要再次创建它们。当我使用 EF 方法时:_ctx.Articles.Add(newArticle),它会生成插入句子到类别 table 并复制我的行。基本上,我只需要将数据添加到 Article table 和引用 table CategoryArticles。添加方法,将行添加到 Article table (ok) plus Category table (wrong step) plus CategoryArticles table (ok).任何想法如何避免在我的类别中添加这些行又是table。?感谢任何帮助。

编辑:我正在使用 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)

这是关系模型

多对多关系隐藏了 EF 中的交叉引用 table。关系模型根本不应显示 CategoryArticles table。文章 table 应该有一个 "Categories" 导航 属性。只需为其添加一个类别,然后保存即可。

感谢@Robert McKee,解决问题的方法是直接从数据库中获取类别,这样entity framework在保存主要实体时会自动识别这些类别,避免重复它们.