1

1:1 の関係を持つ 2 つのテーブルがあります。エンティティ フレームワークのモデル ファースト アプローチを使用して作成しました。今、私はレコードを削除したいのですが、あるテーブルからは削除できず、他のテーブルからは削除できません。試してみると、次の例外が発生します。

AssociationSet 'FK_lm_ab_profile_lm_profile_master' から関係を追加または削除しています。カーディナリティの制約により、対応する「lm_ab_profile」も追加または削除する必要があります。

ABProfile との関係を持つプロファイル テーブルがあり、プロファイルと AbProfile から削除したい。どちらも profile_id を PK として使用し、ABProfile は profile_id を FK として使用します。

私のコード:

        //Get the old profile to see if one already exists
            var oldProfile = context.lm_profile_master.FirstOrDefault(p => p.profile_id.Equals(profileID));

            lm_ab_profile ab = new lm_ab_profile();

            //Check to see if user doesn't already exist
            if (oldProfile != null)
            {

                    //try and specify the relationship between profile and ABProfile using profileID
                    oldProfile.lm_ab_profileReference.EntityKey = new System.Data.EntityKey("luminusEntities.lm_ab_profile", "profile_id", profileID);    


                    //remove found object from the database and persist changes  

                    context.DeleteObject(oldProfile);
                    context.SaveChanges();
              }

2 つのテーブルが関連していることを指定するにはどうすればよいので、一方からレコードを削除すると、もう一方のレコードも削除されます...モデルのカスケード関数用にテーブルを設定します。

4

1 に答える 1

0

あなたが説明した状況は、テーブル間の制約です。一貫性に影響を与えようとします。

これを見て、Entity Frameworkのオブジェクトとそれに関連するすべてのエンティティを削除し、 ON DELETE CASCADEを定義します

于 2013-07-18T08:01:32.603 に答える