我有以下情况:
首先是唯一相关的表/类(全部从数据库(MySQL)自动生成):
edmx 文件的相关部分:
<Association Name="navigationitem_ibfk_1">
<End Role="navigationitem" Type="Model.Store.navigationitem" Multiplicity="0..1">
<OnDelete Action="Cascade" />
</End>
<End Role="navigationitem1" Type="Model.Store.navigationitem" Multiplicity="*" />
<ReferentialConstraint>
<Principal Role="navigationitem">
<PropertyRef Name="id" />
</Principal>
<Dependent Role="navigationitem1">
<PropertyRef Name="navigationitemid" />
</Dependent>
</ReferentialConstraint>
</Association>
我认为不需要更多的词:它是一个导航表,每个导航项都可以有子项(但这不是必须的)。
现在,当我尝试删除具有孩子的顶级项目时:
context.Remove(topLevelNode);
context.SaveChanges();
它删除了数据库中的顶级节点,但在子节点上它只是设置navigationitemid
为null
(是的 - 我已经在数据库中定义了删除级联,当我直接在那里删除它时它可以工作)。
所以我认为正在发生的事情是,当我删除父节点时,框架将所有子节点设置navigationitemid
为NULL
,然后当导航应该保存到数据库时,它不会级联删除,因为子节点navigationitemid
是NULL
。
我能做些什么?谢谢你。