2

以下の例のような多対多のEFマップがあります。私はEFコードファーストアプローチを使用しているので、マッピングクラスはEntityTypeConfiguration<>を継承します。

this.HasMany(a => a.KPIs)
            .WithMany()
            .Map(a =>
            {
                a.ToTable("KeyResultArea_KeyPerformanceIndicator_Mapping");
                a.MapLeftKey("KRA_Id");
                a.MapRightKey("KPI_Id");
            });

この結果、以下に示すスキーマが残ります。

ここに画像の説明を入力してください

これまでのところ、大きな驚きはありません。-ただし、これらのマッピングの1つをソフト削除できるようにしたいので、目的のスキーマは次のようになります。

dbo.KeyResultArea_KeyPerformanceIndicator_Mapping(
   KRA_Id int,
   KPI_Id int,
   Deleted bit)

それが理にかなっていることを願って、どんなポインタでも大歓迎です。

4

1 に答える 1

2

関係の削除を定義するには、独自のロジックが必要になる場合があると思います。リレーションシップの新しいエンティティタイプを定義できます。

public class KRAKPI{

public int KPA_Id{get;set;}
public int KRA_Id{get;set;}
public bool IsDeleted{get;set;}

}

KRAKPI次に、状態マネージャーで削​​除されたすべてのアイテムを取得し、値を変更して変更された状態に設定することで、変更の保存で削除ロジックを定義できますIsDeleted。 これは、変更の保存方法で削除された値を設定する方法に関する投稿です。

于 2012-08-01T03:49:50.573 に答える