实体框架-在N:N中删除单个实例的完整关系

本文关键字:实例 关系 单个 框架 实体 删除 | 更新日期: 2023-09-27 17:53:14

我有以下类

public class ObjectA{
   private List<ObjectB> list;    
}

ObjectA和ObjectB是N:N关系
如何删除两者之间的所有关系?
似乎list.clear()不起作用。
谢谢。

实体框架-在N:N中删除单个实例的完整关系

如果实体附加到上下文list.Clear()将执行该工作,例如:

using (var ctx = new MyContext())
{
    var objectA = ctx.ObjectAs.Include("list").Single(o => o.Id == someId);
    objectA.list.Clear();
    ctx.SaveChanges();
}

list.Clear()在连接模式下工作很好,但它需要所有B记录属于从数据库中拉出的A。有时,如果有太多的B,可能会影响性能(在实践中很少发生)。在这种情况下,还可以使用存储过程或context.Database。ExecuteSqlCommand("delete from…")手动删除关系表中的关系