EntityFramework - 删除多对多关系

时间:2012-09-10 10:31:36

标签: entity-framework entity

我有以下实体树:

ParameterDefinition-->ParameterOperation
ParameterDefinition-->ParameterGroup-->Parameter

此外,ParameterOperationParameter之间存在多对多关系(映射到FK-FK表)。 所有关联都声明为删除级联(只有多对多不是删除级联)。 问题是当我MarkAsDeleted Parameter对象通过ParameterOperation时 (ParameterDefinition.ParameterOperations[0].Parameters[0].MarkAsDeleted)它已从数据库中删除,地图表也会更新(行已删除),但当我尝试从Parameter删除ParameterGroup时 (ParameterDefinition.ParameterGroups[0].Parameters[0].MarkAsDeleted)它根本不被删除(在DB上没有执行删除查询)。 可能是什么问题?

另外,我如何删除多对多的关系?例如,我想保留所有参数和所有ParameterOperations,但我想删除Parameters[0]ParameterOperations[0]之间的关系。

我该怎么办?

如果我设置了NavigationProperty - ParameterDefinition.ParameterOperations[0].Parameters.MarkAsDeleted它实际上从DB中删除了我不想要的参数

1 个答案:

答案 0 :(得分:0)

只需从Parameter集合中删除ParameterOperation's实体,然后保存上下文就足以删除联结表中存在的多对多关系。

ParameterDefinition.ParameterOperations[0].Parameters.Remove(ParameterDefinition.ParameterOperations[0].Parameters[0]);
Context.SaveChanges();