(私が思うに) シンプルであるべき何かに問題がありますが、明確な情報が見つかりません。
人が複数の仕事を持つことができるドメインを説明する 3 つのテーブルがあるシナリオでは、次のようになります。
Person - PersonId、Name
Job - JobId、JobName
を持つ PersonJob - PersonId、JobId、YearsOfEmployment を持つ
注: 私のオブジェクト モデルには、各テーブルを表すエンティティがあります。そこには有用なメタデータ (YearsOfEmployment) があり、単純な結合テーブルではないため、Person/Job 関係を表す 3 番目のエンティティがあります。
したがって、PersonId と JobId を知っている場合、セッションを使用してそれらの ID に一致するオブジェクトを返す簡単な方法はありますか?
または、別の言い方をすれば、主キーが脳死状態であることを既に知っているので、SQL「SELECT YearsOfEmployment FROM PersonJob WHERE PersonId=1 AND JobId=1」を次のようなものに変える簡単な方法です。
var keys = new {PersonId=1, JobId=2};
PersonJob obj = Session.Get<PersonJob>(keys);
ところで: マップは次のようになります。
<class name="Person" table="dbo.Person" lazy="true">
<id name="PersonId">
<generator class="native"/>
</id>
<property name="Name"/>
</class>
<class name="Job" table="dbo.Job" lazy="true">
<id name="JobId">
<generator class="native"/>
</id>
<property name="JobName"/>
</class>
<class name="PersonJob" table="dbo.PersonJob" lazy="true">
<composite-id>
<key-property name="PersonId"></key-property>
<key-property name="JobId"></key-property>
</composite-id>
<property name="YearsOfEmployment"/>
</class>