我有以下实体树:
ParameterDefinition-->ParameterOperation
ParameterDefinition-->ParameterGroup-->Parameter
此外,ParameterOperation
和Parameter
之间存在多对多关系(映射到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中删除了我不想要的参数
答案 0 :(得分:0)
只需从Parameter
集合中删除ParameterOperation's
实体,然后保存上下文就足以删除联结表中存在的多对多关系。
ParameterDefinition.ParameterOperations[0].Parameters.Remove(ParameterDefinition.ParameterOperations[0].Parameters[0]);
Context.SaveChanges();