如何处理多对多关系并直接访问中间的表
本文关键字:访问 中间 何处理 处理 关系 | 更新日期: 2023-09-27 17:59:03
我有3个表和多对多关系,例如,作者、图书和书籍作者 当我更新实体框架edmx文件(从数据库更新)并选择所有3个表时,实际上我会在EF中得到2个表,而不是3个图书作者将被隐藏。这对我来说是个问题,因为有时我只有 当我尝试"作弊"时,我首先更新(到EF)图书和作者,在第二次更新书籍作者 映射从第行开始的片段时出现问题。。。。两个实体可能不同的键被映射到同一行。确保这两个映射片段将AssociationSet的两端映射到相应的列。 那么,如何在具有多对多关系的同时直接访问中间的表呢?book_id
和author_id
的列表。在这种情况下,我想将这些值直接保存在中产阶级中。
据我所知,当您使用数据库优先的方法而不修改中间的表时,这是不可能的。如果您选择应用"模型优先"方法,而不是添加多对多关系,请在模型中创建中间实体并使用一对多关系。
如果您将数据库和另一列更改为中间表,使中间表不仅包含外键,它也将正常工作。
我还想知道为什么您需要将中间的表作为一个实体来访问。
我不太明白为什么需要直接访问中间的表。但只要在表中添加一个伪布尔字段(永远不会使用),EF就会停止自动隐藏它。
您想要做的(以及遇到问题的地方)似乎是获取现有书籍的book_id
,以及您想添加到该书中的作者的author_id
列表。
在这种情况下,只需从authors表中提取所有作者,并从books表中获取图书,然后对每个作者执行Book.Authors.Add(author);
。