単一のデータベース テーブルにマップする複数の小さいバージョンのクラスがあります。
例 UserBrief クラス:
[Table("Users")]
public partial class UserBrief
{
[Key]
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
UserAdmin クラス
[Table("Users")]
public partial class UserAdmin : UserBrief
{
public int RoleID { get; set; }
}
UserHR クラス
[Table("Users")]
public partial class UserHR : UserBrief
{
public string EmailAddress { get; set; }
public string Phone { get; set; }
}
ユーザー クラス
[Table("Users")]
public partial class User
{
[Key]
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int RoleID { get; set; }
public string EmailAddress { get; set; }
public string Phone { get; set; }
}
複数の境界付けられたコンテキストがあります。上記のクラスを使用したコンテキストの機能に応じて。
コンテキストに単一のクラスを追加し、他のすべてのクラスを無視すると、正常に機能します。
例えば
public DbSet<UserHR> UserHRs { get; set; }
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
modelBuilder.Ignore<UserBrief>();
modelBuilder.Ignore<UserAdmin >();
modelBuilder.Ignore<User>();
}
UserBrief と UserHRs を追加すると、「無効な列名 'Discriminator'」というエラーが表示されます。これは、EF がこれを階層ごとのテーブル (TPH) アプローチであると想定しているためです。
解決策を探していますが、これを行う方法が見つかりません。
何か案は?前もって感謝します。