.net で複数の継承を行うことはできません。サポートされていません (エンティティ フレームワークにも同じことが当てはまります)。複数のインターフェースを実装できますが、これは少し異なる概念です。つまり、'Worker' は顧客などのオブジェクトによって実装されるインターフェースである可能性があります。
エンティティ フレームワークでは、ディスクリミネータは Table-per-hierarchy を使用する場合にのみ実装されると思います。これは、両方の子エンティティが同じテーブルに格納されている場所であり、ディスクリミネーターはどちらがどちらであるかを識別します。
Table-per-type は基本的に、エンティティ (個人、顧客、従業員) が異なるテーブルに格納される場所ですが、コード内で単一のエンティティとしてアクセスできます (つまり、個人から継承された顧客)。
インターフェイス (おそらく IWorker) を作成し、Customer から継承して IWorker を実装するクラス (おそらく WorkerCustomer??) を作成する必要があるかもしれません。
編集: 15/02/2013 19:00
わかりましたので、単一のテーブルでデータを表現するという点で、以下はあなたが探しているものかもしれません:
public class MyDbContext : DbContext
{
public MyDbContext() : base("TestDB")
{
}
public DbSet<Person> People { get; set; }
public DbSet<Customer> Customers { get; set; }
public DbSet<Worker> Workers { get; set; }
public DbSet<WorkerCustomer> WorkerCustomers { get; set; }
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
public class Customer : Person
{
public string CustomerNumber { get; set; }
}
public interface IWorker
{
string WorkerNumber { get; set; }
}
public class Worker : Person, IWorker
{
public string WorkerNumber { get; set; }
}
public class WorkerCustomer : Customer
{
public string WorkerNumber { get; set; }
}