实体框架中级联删除的问题

时间:2011-06-22 17:21:44

标签: entity-framework entity-framework-4 entity-framework-4.1 entity-relationship

根据级联删除,我写下面的代码,但有一个错误: 更新条目时发生错误。有关详细信息,请参阅内部异常。

 using (doctorEntities de = new doctorEntities())
            {
                var delete_base_print = (from Table_infobase_print tip in de.Table_infobase_print
                                         where tip.ID == ((Doctor.Table_infobase_print)(datagrid_table_infobase_print.SelectedItem)).ID
                                         select tip).First();
                de.DeleteObject(delete_base_print);
                de.SaveChanges();
            }

<Association Name="FK_Table_infodetail_print_Table_infobase_print">
      <End Role="Table_infobase_print" Type="doctorModel.Table_infobase_print" Multiplicity="1">
        <OnDelete Action="Cascade" />
      </End>
      <End Role="Table_infodetail_print" Type="doctorModel.Table_infodetail_print" Multiplicity="*" >
      </End>
      <ReferentialConstraint>
        <Principal Role="Table_infobase_print">
          <PropertyRef Name="ID" />
        </Principal>
        <Dependent Role="Table_infodetail_print">
          <PropertyRef Name="ID_infobase" />
        </Dependent>
      </ReferentialConstraint>
    </Association>

1 个答案:

答案 0 :(得分:2)

<OnDelete Action="Cascade" />

这仅涵盖对象上下文中的已加载实体(它将级联已删除的相关实体),但不包括数据库本身。确保您已在相应的表格上为数据库设置了级联删除约束

修改

要在SQL Server中设置级联删除,请将外键关系的删除规则设置为级联。对于这个开放的SQL Server Management Studio,打开有问题的表进行设计并显示外键关系。在 INSERT和UPDATE规范中将级联设置为删除规则。

enter image description here