コードに最初にマップするかなり複雑なデータベースがありますが、2つの別々のクラスに分割する必要があるテーブルに問題があります。次のようにEFコード複数のクラスを1つのテーブルに最初にマッピングする
テーブル構造の基本的な例は次のとおりです。
Site
----
Id
Name
Person
------
Id
Name
Dob
Address
Rank
Age
SiteId
PersonRoleLink
--------------
PersonId
RoleId
Role
----
Id
Name
は基本的にサイトには多くの人々を持っており、それぞれの人が多くの役割を持つことができます。
人物の役割に応じて、入力されるプロパティに応じて異なります。
次のように理想的には、私はクラスの構造をしたいと思います:
Customer
、
Employee
と
Manager
はすべて
Person
テーブルから来て、
PersonRoleLink
テーブルに関連するリンクに依存している
public class Site {
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Customer> Customers { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
public virtual ICollection<Manager> Managers { get; set; }
}
public class PersonBase {
public int Id { get; set; }
public string Name { get; set; }
public virtual Site Site { get; set; }
}
public class Customer : PersonBase {
public string Name { get; set; }
public DateTime Dob { get; set; }
}
public class Employee: PersonBase {
public int Age { get; set; }
}
public class Manager: PersonBase {
public int Rank { get; set; }
}
を。
だから私は戻っPerson
テーブルにSite.Managers
行のようなものを呼び出すときに正しいサイトIDを持つと「マネージャー」
呼ばRole
へのリンクを持つものは、最初のコードでは、この構造は可能ですがありますか?もしそうなら、これに対するマッピングはどのように達成されていますか?もしそうでなければ、この構造に実行可能な代替手段はありますか?
おかげ
偉大な答え、ありがとう。 – lancscoder