![](/img/trans.png)
[英]NHibernate - How to map composite-id with parent child reference
[英]How to map composite-id with fluent nhibernate using an interface?
我正在嘗試將.hbm
映射切換為流暢的映射,並且復合ID的映射和接口的使用存在問題
該類看起來如下:
public class ClassWithCompositeId {
public virtual IKeyOne KeyOne { get; set; }
public virtual IKeyTwo KeyTwo { get; set; }
}
我們的hbm映射看起來像這樣:
<hibernate-mapping ...>
<class name="ClassWithCompositeId" table="t_classwithcompositeid">
<composite-id>
<key-many-to-one name="KeyOne" column="colkeyone" class="company.namespace.boSkillBase, BL_Stammdaten" />
<key-many-to-one name="KeyTwo" column="colkeytwo" class="boQualifikation" />
</composite-id>
</hibernate-mapping>
請注意,我們在課堂上有接口! 不,我試圖用流利的nhibernate來映射它。
Map {
public ClassWithCompositeIdMap() {
CompositeId()
.KeyReference(x => x.KeyOne, "colkeyone")
.KeyReference(x => x.KeyTwo, "colkeytwo");
...
}
}
但是現在Fluent生成Mapping如下:
...
<composite-id mapped="false" unsaved-value="undefined">
<key-many-to-one name="KeyOne" class="company.namespace.IKeyOne, Interfaces, Version=0.1.4.3379, Culture=neutral, PublicKeyToken=null">
<column name="colkeyone" />
</key-many-to-one>
<key-many-to-one name="KeyTwo" class="company.namespace.IKeyTwo, Interfaces, Version=0.1.4.3379, Culture=neutral, PublicKeyToken=null">
<column name="colkeytwo" />
</key-many-to-one>
</composite-id>
...
“類”屬性現在指向接口,而不是此接口的實現,這會導致錯誤。
如何告訴Fluent nHibernate使用另一個類作為屬性值?
嘗試從SourceForge下載NhGen 。 它讀取數據庫模式並生成Fluent映射和類等。雖然所有代碼可能都不是您需要的,但它應該以正確的方向啟動您,因為它支持復合鍵並將它們表示為主實體之外的單獨類。
我相信它使用類似的語法
CompositeId()
.ComponentCompositeIdentifier(x => x.Key, "Namespace.Key, Assembly")
.KeyProperty(x => x.Key.Id1, "Id1")
.KeyProperty(x => x.Key.Id2, "Id2")
.KeyProperty(x => x.Key.Id3, "Id3");
坦克! 但我已經找到了答案。 事實上,我發現流利的nHibernate缺少一個功能。 該功能已被Paul Batum添加到dev分支中。
你會像這樣使用它:
Map {
public ClassWithCompositeIdMap() {
CompositeId()
.KeyReference(x => x.KeyOne, k =>
k.Type<KeyOneImplementation>(), "colkeyone")
.KeyReference(x => x.KeyTwo, k =>
k.Type<KeyTwoImplementation>(), "colkeytwo");
...
}
}
http://github.com/paulbatum/fluent-nhibernate/tree/dev
您可以在此處查看原始對話: http : //support.fluentnhibernate.org/discussions/help/349-how-to-map-a-composite-id-when-using-interfaces-or-how-to-change-該級的屬性,在最關鍵的,多到一個標簽
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.