【发布时间】:2021-04-19 22:34:55
【问题描述】:
经过几个晚上的反复试验,我一直无法找到一种方法来更新与可跟踪实体的多对多关系中的自定义类型集合。
我有一个类型Bar,可以分配给Foo (Foo.Bars) 的集合成员。在 API 消费者中,用户从列表中选择零对多 Bar,这意味着可以从 Foo.Bars 集合中添加或删除 Bars。
这是在 MVC 设置中,这就是我使用 TrackableEntities 来管理更新属性的原因。我管理的最好的方法是将选中的Bar 添加到集合中。如果在 Foo.Bars 集合中已经有 Bars 的 Foo 被回发,而对 .Bars 集合没有任何更改,则 EF 会在再次添加相同的 Bar 时产生外键冲突。从前端的列表中删除一个 Bar 并使用集合的新所需状态将集合发回并不会在保存时删除所需的 Bar(s)。我玩弄了将这些Bar 的 TrackingState 设置为删除或修改,但它似乎被忽略了,这确实有意义 - Bar 实体没有被更新或删除;应该更改的是 Foo.Bars 属性。
是否有人使用过 TrackableEntities 并能够管理 EF Core 5 多对多导航属性? TrackableEntities/TrackableEntities.Core.Sample 项目中没有它的示例。显然 TrackableEntities 在 2015 年就获得了 M-to-M 支持,但从那以后我一直找不到任何人谈论它。
【问题讨论】:
标签: many-to-many entity-framework-core-2.1