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

时间:2013-01-15 17:28:56

标签: c# entity-framework

我有以下课程

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

ObjectA和ObjectB处于N:N关系 如何删除两者之间的所有关系?
似乎list.clear()没有做这项工作 感谢。

2 个答案:

答案 0 :(得分:1)

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

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

    objectA.list.Clear();

    ctx.SaveChanges();
}

答案 1 :(得分:0)

list.Clear()在连接模式下运行正常,但它需要所有B记录属于从数据库中提取的A。如果B太多(实际上很少发生),有时可能会损害性能。在这种情况下,您还可以使用store procedure或context.Database.ExecuteSqlCommand(“delete from ...”)手动删除关系表中的关系。