在EntityFramework 4中删除多对多关系

时间:2012-09-07 15:16:52

标签: c# asp.net-mvc entity-framework

我正在尝试使用EntityFramework 4删除一系列实体。这是我正在使用的代码:

var role = (
    from r in context.tblAdminRoles
    where r.AdminRoleId == this.Role.AdminRoleId
    select r
).First();

this.AdminUser.tblAdminRoles.Remove(role);
context.SaveChanges();

context.tblAdminRoles.Remove(role);
context.SaveChanges();

但是,当我执行它时,我收到以下错误:

  

DELETE语句与REFERENCE约束"FK_tblAdminUserRole_tblAdminRole"冲突。冲突发生在数据库"MyMainSite2",表"dbo.tblAdminUserRole",列'AdminRoleId'

     

声明已经终止。

我的数据库具有以下结构:

----------------      --------------------      ----------------
|              |      |                  |      |              |
| tblAdminUser | ---< | tblAdminUserRole | >--- | tblAdminRole |
|              |      |                  |      |              |
----------------      --------------------      ----------------

有人能指出我可能出现问题的正确方向吗?

1 个答案:

答案 0 :(得分:4)

检查数据库中是否为引用链接表tblAdminUserRole的两个关系启用了级联删除,尤其是FK_tblAdminUserRole_tblAdminRoletblAdminRole表。看起来它没有启用,因此删除角色不会删除链接表中最终导致FK约束违规的条目。