我有两个实体 a 和 b 以及它们之间的 m2m 关联。实体 a 和 b 加载到我的 DbContext 中,而 m2m 关联没有。现在,在我的程序中,我知道 a 和 b 的主键,我需要删除 m2m 关联。
当然,我可以从数据库中重新加载 a 并包含它的 m2m 关联。但是,这需要额外往返数据库以从数据库中获取实体。
我也可以先从 DbContext 中分离 a,然后将 b 添加到其 BSet,然后再次附加 a,然后调用 remove 类似:
context.Entry(a).State = EntityState.Detached;
a.Bset.Add(b)
context.Set(typeof(A)).Attach(a);
a.BSet.Remove(b)
但是,通过将 a 从其上下文中分离然后附加它,我失去了对 a 所做的更改。因此,调用 SaveChanges() 可能不会将 a 的所有更改持久保存到数据库。
我的问题是:如何删除 a 和 b 之间的 m2m 关联,而不需要额外往返数据库,并且不会丢失对 a 或 b 所做的任何更改?
[编辑:我正在寻找的是一种方法 a.BSet.Attach ,它使我能够附加 a en b 之间的现有 m2m 关联]
我正在使用最新版本的实体框架,并且正在使用 DbContext。
欢迎任何帮助。
提前致谢,
梅林