を検索:
NHibernateの一対多集・私は、次のクラス持っている唯一のスーパー
class Person
{
public string Name { get; set; }
}
class Employee : Person
{
public int Salary { get; set; }
}
class Company
{
public IList<Person> PeopleWhoAreNotEmployees { get; set; }
}
者と従業員のテーブルあたりのクラス階層構造の戦略を使用してマッピングされます。
PeopleWhoAreNotEmployeesコレクションを取得するときに、「Person」と「Employees」以外の要素のみを含むようにします。
スーパークラスの要素のみを取得するようにコレクションを構成するにはどうすればよいですか。
多態性と関係すると思いますが、どうやってそれを行うのか本当に分かりません。
おかげで、
ジョニー
EDIT:ジェイミーとの議論以下
は、私はここの場合は、本当に人と従業員が、より多くの従業員とHistoricalEmployeeのようではないことを明確にする必要があります感じています。
意味 - 従業員が死亡したとき、彼らは実際に削除されていませんが、
ですが、終了日などのいくつかの属性を持つHistoricalEmployeeになります。
明らかに、HistoricalEmployeesの数は、従業員の数(
)を超えてしまいますので、現在の従業員だけが必要な場合はすべてのHistoricalEmployeesを取得できません。
元の質問のあいまいさに申し訳ありません...
J
P.S.
私は元の質問を変更していないので、答えが無関係になるでしょう。
この質問の新しいバージョンがありますhere
おかげで、:1.(nHiberntaeナブ質問が)どのように私のマッピングは、このためのようになりますので、同じよう 流暢な構成が見えますか?プライベートフィールドをマップしますか? 2.フィルタリングがDBレベルで行われるか、または既存のすべてのPeopleオブジェクトがロードされ、アプリケーションレベルでフィルタリングされるかどうかは、どこのユーザー(?)が判断しますか? –
編集のおかげで、ジェイミー。残念ながら、このソリューションは私の場合は受け入れられません。私の場合、Personよりも多くの従業員がいるため、すべての従業員をアプリレベルにロードしてフィルタリングする余裕がありません。フィルタリングがDBレベルで行われるようにする方法はありますか? –
パフォーマンスをプロファイリングしましたか?ロードされるレコードの典型的な数は何ですか?同じセッションでEmployeesコレクションにアクセスせずにPeopleWhoAreNotEmployeesコレクションにアクセスするのは正常ですか? –