2

Party という抽象基本クラスがあります。具体的なサブクラスがいくつかあります (Company、Person、Department)。Party には、識別子として使用される PartyType というプロパティがあります。各タイプは、次のような構成を持つ独自のテーブルにあります

Map<Person>(p => p.Requires("PartyType").HasValue("Person").ToTable("People");

すべてがうまく機能します。次に、Employee という Person のサブクラスを追加します。これをどのようにマッピングしますか?私はもう試した

Map<Employee>(e => e.Requires("PartyType").HasValue("Employee")
   .ToTable("Employees");

しかし、これにより実行時エラーが発生します

(43,10) : エラー 3032: 43 行目、84 行目から始まるフラグメントのマッピングの問題:EntityTypes WOL.EFData.Person、WOL.EFData.Employee がテーブル People の同じ行にマップされています。マッピング条件を使用して、これらのタイプがマップされる行を区別できます。

4

1 に答える 1

1

タイプごとのテーブルマッピングでは、EFはディスクリミネーター構成を想定していません。

modelBuilder.Entity<Person>().ToTable("People");
modelBuilder.Entity<Employee>().ToTable("Employees");

詳細については、この記事を参照してください。

于 2012-06-22T01:01:36.140 に答える