如何处理多对多关系并直接访问中间的表

本文关键字:访问 中间 何处理 处理 关系 | 更新日期: 2023-09-27 17:59:03

我有3个表和多对多关系,例如,作者图书书籍作者

当我更新实体框架edmx文件(从数据库更新)并选择所有3个表时,实际上我会在EF中得到2个表,而不是3个图书作者将被隐藏。这对我来说是个问题,因为有时我只有book_idauthor_id的列表。在这种情况下,我想将这些值直接保存在中产阶级中。

当我尝试"作弊"时,我首先更新(到EF)图书作者,在第二次更新书籍作者

映射从第行开始的片段时出现问题。。。。两个实体可能不同的键被映射到同一行。确保这两个映射片段将AssociationSet的两端映射到相应的列。

那么,如何在具有多对多关系的同时直接访问中间的表呢?

如何处理多对多关系并直接访问中间的表

据我所知,当您使用数据库优先的方法而不修改中间的表时,这是不可能的。如果您选择应用"模型优先"方法,而不是添加多对多关系,请在模型中创建中间实体并使用一对多关系。

如果您将数据库和另一列更改为中间表,使中间表不仅包含外键,它也将正常工作。

我还想知道为什么您需要将中间的表作为一个实体来访问。

我不太明白为什么需要直接访问中间的表。但只要在表中添加一个伪布尔字段(永远不会使用),EF就会停止自动隐藏它。

您想要做的(以及遇到问题的地方)似乎是获取现有书籍的book_id,以及您想添加到该书中的作者的author_id列表。

在这种情况下,只需从authors表中提取所有作者,并从books表中获取图书,然后对每个作者执行Book.Authors.Add(author);