0

1つの基本抽象クラスを継承するクラスがいくつかあります。これは、Fluent APIを介して既存のデータベースにマップされます(Table-Per-Concrete-Typeを使用します。つまり、どのテーブルにもマップされていない基本抽象クラスです)。

ここで、コードにいくつかの統計を追加したいと思います。私にとって最善の解決策は、3〜4個の新しいクラスにTPHアプローチを使用することです。上記と同じクラスを継承する場合としない場合があります。

しかし、EFがこれらの3〜4つのクラスにTPHアプローチを使用するように指示する方法がわかりません。弁別器付きの正しいテーブルを追加する必要がありますか?それは問題なく使用されますか?または、流暢なAPIを介して何らかの方法で指定する必要がありますか?

4

1 に答える 1

1

見つけました。TPH を使用する EF を何らかの方法で指定する必要はありません。以下を行うだけで十分です:

クラス階層を作成する

class Base { ... }
class Derived1 : Base { ... }
class Derived2 : Base { ... }
.......
class DerivedN : Base { ... }

基本型として呼び出されるテーブルを作成します (それ以外の場合は、ModelBuilder を使用してマップすることを忘れないでください)。共通の列 (の内容Base) と、各派生型のパブリック プロパティごとに 1 つの列があります。「Discriminator」列を追加します(nvarchar(128)ただし、Unicode クラス名を使用しない限り、varchar を使用することをお勧めします)。

DbContext の後継に DbSet:DbSet<Base> Data { get; set; }を 1 つだけ追加し、CRUD 操作に使用します。

それだけです!

于 2013-01-23T19:15:07.613 に答える