我遇到麻煩的東西,(我認爲)應該是簡單的,但無法找到任何明確的信息。使用nHibernate 2.0的Session.Get <T>麻煩在一個類與複合ID
在那裏我有三個表的情況下,描述一個領域,當一個人可以有一個以上的作業:
人 - 有PERSONID,名稱
工作 - 具有的JobId,作業名
PersonJob - 有PERSONID ,JobId,YearsOfEmployment
注意:在我的對象模型中,我有表示每個表的實體。我有第三個實體來表示Person/Job關係,因爲那裏有有用的元數據(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);
BTW:地圖會是這個樣子:
<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>
可能是值得加入整個PersonJobKey類作爲目前我正在試圖找出我需要重寫什麼課。 – 2010-04-20 17:06:29