1

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 |
|              |      |                  |      |              |
----------------      --------------------      ----------------

何がうまくいかないのかについて、誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

4

リンクテーブルを参照する2つの関係、特にテーブルへの関係について、データベースでカスケード削除が有効になっているかどうかを確認します。有効になっていないようです。したがって、役割を削除してもリンクテーブルのエントリは削除されず、最終的にFK制約違反になります。tblAdminUserRoleFK_tblAdminUserRole_tblAdminRoletblAdminRole

于 2012-09-07T16:15:37.997 に答える