我有以下情况:
首先是唯一相关的表/类(全部从数据库(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。
我能做些什么?谢谢你。