0
我正在使用舊數據庫,無法更改。
我有一個表(Table1)與另一個表(表2)有一個複合關鍵的多對一的關係。
如果一切是兩岸向前的表1的映射可能是這樣的:nHibernate:與複合鍵的多對一映射中的默認值
<class name="Table1" table="Table1">
<id name="Id" column="I_ID"></id>
<many-to-one name="Table2" class="Table2">
<column name="I_TABLE2_ID1"></column>
<column name="I_TABLE2_ID2"></column>
</many-to-one>
</class>
我的問題是,我沒有在表1沒有I_TABLE2_ID2列。
所以我想用一個默認值來代替。有什麼辦法可以在映射文件中完成這個任務嗎?
EDIT1:
以下映射似乎工作:
<class name="Table1" table="Table1">
<id name="Id" column="I_ID"></id>
<property name="Table2Id1" column="I_TABLE2_ID1"></property>
<bag name="Table2" where="I_ID2 = 12">
<key column="I_ID1" property-ref="Table2Id1"></key>
<one-to-many class="Table2"/>
</bag>
</class>
此外,我不得不改變表2屬性爲IList的類型,但我想我能使用的私有財產,使實體外觀更好...
感謝您的回覆!這是你的嗎?我猜它也有可能跳過映射中的關係,並將其添加到linq查詢中呢? – Vegard
是的,這就是我的意思。如果需要,可以繞過包中的where子句並在代碼中手動過濾集合。 –