2010-08-26 74 views
1

我有一種情況,我已經在我的域模型中定義了一個實體,我想在其中公開一個id列。流利的NHibernate映射單列到複合鍵

public class OfferedProduct 
{ 
    public virtual string Id {get; set;} 

    //other properties 
} 

遺留數據庫表,這將映射到是

CREATE TABLE ProductGrouping 
MemberNumber INT NOT NULL, 
GroupId CHAR NOT NULL, 
... 

我不想通過引入兩個屬性,並使用「CompositeId」構建映射他們妥協的域模型。

CompositeId().KeyProperty(x => x.MemberNumber).KeyProperty(x => x.GroupId) 

我想最好是連接兩個值的形式{MemberNumber} {}的GroupId和揭露這個作爲id值。然後,我會使用自定義類型來處理從數據庫中檢索時這些值的連接方式,並在保存/選擇時分解。

我注意到「CompositeId」方法不允許customType與標準的「Id」調用一樣;但「Id」方法不提供設置多個列的功能。我看過一些例子,其中人們使用「地圖」來使用自定義類型組合兩列,但不使用ID值。

我注意到「CompositeId」有一個重載,可以採取自定義的身份類,但我不確定如何在這種情況下使用它。

CompositeId<OfferedProductIdentifier>(x => x.?) 

任何幫助將不勝感激。

回答

0

萬一有人來這裏

CompositeId() 
    .KeyProperty(t => t.Id, c => 
     c.Type(typeof(MyUserType)).ColumnName("MemberNumber").ColumnName("GroupId"));