EF中的Foreign-key的删除关系

来源:互联网 发布:淘宝的经营模式 编辑:程序博客网 时间:2024/04/30 07:19
    删除操作是我们开发中经常会遇到的一个问题,而关联删除也是其中常遇到的一种情况,下边是一个小例子来说明允许外键为空值的情况.
    数据库表为group(用户组)/user(用户表),表关系为一对多,user表中Group_Gid与group表中Gid字段建立外键关系.

user表


group表


user表数据


group表数据



下面代码我要删除用户组gid为2的user用户组,从上边的user表中可以看出大部分用户都属于user组.

   不用多说这段代码肯定会报异常:DELETE 语句与 REFERENCE约束"FK_Users_Groups_Group_Gid"冲突。该冲突发生于数据库"users",表"dbo.Users",column 'Group_Gid'。语句已终止。

   原因当然是名为"User"的用户组外键存在数据,此时当然不允许进行删除操作.除非你查询到所有"多"的数据,把它保存给"一",然后执行删除操作,则可以成功.





user表删除后结果


group表删除后结果

    下面我手动在group表中增加一条数据Test用户组,gid为4,把gid换成user表中没有外键数据的4,即外键数据为空的时候,就允许删除操作了.