0

Candidateクラスがあります。誰かがを削除したときCandidate、私DeletedCandidateはから派生しCandidateたを別のテーブルに保存したいと思います。

これをEF、コードファーストでモデル化するにはどうすればよいですか?私の最善の選択肢はTBCだと思いますが、コンテキストで以下を使用すると、aSystem.Data.MappingExceptionがスローされます。

modelBuilder.Entity<DeletedCandidate>().Map(d => {
                d.ToTable("DeletedCandidate");
                d.MapInheritedProperties();

            });
4

1 に答える 1

1

アーカイブのようなタスクには継承を使用しません。メインストリーム アプリケーション コードでは、常に Candidates と DeletedCandidates を区別する必要があります。EF では、常にOfType<Candidate>.

DeletedCandidates 用に別のクラス (およびテーブル) を作成します。したがって、必要なときにいつでもそれらにアクセスできますが、コードの残りの部分で害を及ぼすことはありません。欠点は、常に 2 つのプロパティ (および列) を同期させておく必要があることです。これは、両方のクラスに共通のインターフェースを実装させることで軽減できます (これは、コード ファーストで簡単に実行できます)。

DeletedCandidates への外部キー関係を保持する必要がある場合は、話は別です。その場合、削除済みフラグを使用するのが最善だと思います (ただし、アクティブな候補を取得するにはフィルタリングが必要になります)。

ただのアドバイス:D.

于 2012-06-26T08:32:55.457 に答える