我具有類似於在Fluent NHibernate Mapping not on PK Field上多個非PK字段
然而所描述的情況功能NHibernate映射,我的表之間的關係是通過多個非主鍵列說明。 想象克里斯·米克的情況,但其中一個Person
有JobType
和Code
,它們一起應該(抱歉,這是一個傳統的數據庫)唯一地描述Person
Person
------
Id PK
JobType
Code
Name
Order
-----
Id PK
Person_JobType
Person_Code
OrderDetails
塞爾哈特Özgel的answer描述了使用PropertyRef
,但我找不到一個方法來爲多個列單獨執行此操作。我已經試過類似
class PersonMap : ClassMap<Person>
{
public PersonMap()
{
HasMany(p => p.Order)
.KeyColumns.Add("Person_JobType")
.PropertyRef("JobType")
.KeyColumns.Add("Person_Code")
.PropertyRef("Code")
}
}
但是,這顯然是行不通的,因爲KeyColumns.Add()
回報被添加另一個OneToManyPart
所以PropertyRef()
不被反對個人柱。第二PropertyRef()
簡單的覆蓋第一位的,我得到以下錯誤:
NHibernate.MappingException : collection foreign key mapping
has wrong number of columns: MyApp.Person.Order type: Int32
我已經看了KeyColumns.Add()的各種重載,
public TParent Add(string name)
public TParent Add(params string[] names)
public TParent Add(string columnName, Action<ColumnPart> customColumnMapping)
public TParent Add(ColumnMapping column)
特別近兩年,但找不到任何方法來設置PropertyRef
爲每列:( 單獨水平是有辦法做到這一點?我要對這個使用的hbm.xml和FluentNHibernate有可能用錯誤的方式完全?
哇,不錯的工作。我最終爲此做的是在這些類之間沒有NHibernate映射,只是提取值並將它們拋回到另一個類的存儲庫,以便在必要時獲取適當的記錄 - 相當難看。我希望我上週知道你的技巧:) –
這是我在嘗試這種方法時遇到的錯誤(無法通過它):任何映射可能不構成屬性的一部分-Re – dreamerkumar
@VishalKumar更好地提出問題併發布一些碼?看起來屬性propertyref是referenceAny而不是Map – Firo