我遇到了一些(我认为)应该很简单但找不到任何明确信息的问题。
在我有三个表的场景中,描述一个人可以拥有多个工作的域:
Person - 有 PersonId,名称
Job - 有 JobId,JobName
PersonJob - 有 PersonId,JobId,YearsOfEmployment
注意:在我的对象模型中,我有代表每个表的实体。我有第三个实体来表示人员/工作关系,因为那里有有用的元数据(YearsOfEmployment),而不仅仅是一个简单的连接表。
那么,如果我知道 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>