C# 是否从实体框架中删除具有多对多关系的对象?

C# 是否从实体框架中删除具有多对多关系的对象?,c#,entity-framework,asp.net-mvc-2,C#,Entity Framework,Asp.net Mvc 2,我在一个数据库中有两个对象(类、学生),它们具有多对多关系(使用一个简单的连接表)。我已经知道了如何正确地将新对象添加到表中,现在我想删除一个对象 我一直在尝试以下方法: // (a classobj with id==1 does exist) ClassObj cl = (from c in entities.ClassObjs where c.ClassID == 1 select c).First(); entities.ClassObjs.DeleteObject(cl); entit

我在一个数据库中有两个对象(类、学生),它们具有多对多关系(使用一个简单的连接表)。我已经知道了如何正确地将新对象添加到表中,现在我想删除一个对象

我一直在尝试以下方法:

// (a classobj with id==1 does exist)
ClassObj cl = (from c in entities.ClassObjs where c.ClassID == 1 select c).First();
entities.ClassObjs.DeleteObject(cl);
entities.SaveChanges();
这就产生了错误:

"The DELETE statement conflicted with the REFERENCE constraint \"FK_JunctionClassObjsStudents_Students\".
其中,JunctionClassObjsStudents是连接表的名称,它在类和学生表之间创建多对多关系


我需要做什么?谢谢你的帮助

您必须检查引用此
ClassObj
的每个
StudentObj
,然后删除引用。这是保持引用完整性所必需的。

一个解决方案是在FK上放置级联(或
设置NULL
),然后重新生成实体模型。

假设我正确理解了您(这是一个很大的假设)


Class Table->Class\u Student\u Junction Table我尝试删除所有类和所有学生,然后调用entities.SaveChanges()(使用两个foreach语句及其集合并在循环中调用deleteobject),但仍然收到相同的错误消息。有什么想法吗?谢谢你的回答!我听说过级联删除(假设这就是你的意思?),但我的理解是,这将删除与被删除对象相关的所有对象,即使这些对象与其他对象相关。基本上在这个例子中,如果你删除了一个类,它会删除与该类相关的学生,即使他们也与另一个类相关吗?级联删除的是关系,而不是实体。哈哈哈,是的,你理解我:)。谢谢你的回答。如何从实体框架中直接从连接表中删除?有没有一种不用直接使用数据库就能完成您描述的任务的方法?