2009-07-02 71 views
0

如何使用NHibernate設置屬性集的屬性?如何在NHibernate中設置屬性的屬性

下面是一個例子(只是一個例子!)

public class Person 
{ 
    private FullName _subClassProperty = new FullName(); 

    public FullName Name 
    { 
     get { return _subClassProperty; } 
     set { return _subClassProperty; } 
    } 
} 

public class FullName 
{ 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
} 

是序列化到數據庫表看起來像這樣:

table Person { 
    FirstName varchar, 
    LastName varchar 
} 

我想寫一個映射文件爲Person類,這樣NHibernate將訪問Person的FullName屬性的FirstName和LastName屬性,當serializi ng /反序列化Person。我不要希望NHibernate實例化FullName類 - 人類仍應負責實例化FullName類。

我懷疑這是可以使用IPropertyAccessor,但我找不到有關如何實現這一目標的文檔。有人可以幫助NHibernate的新手出去嗎?

回答

2

這看起來像一個NHibernate組件的典型用例。

<component name="FullName" class="YourNamespace.FullName, YourAssembly"> 
    <property name="FirstName" type="String" /> 
    <property name="LastName" type="String" /> 
</component> 

如果您使用流利的:如果你使用XML,像這樣映射

Component(p => p.FullName, m => 
{ 
    m.Map(p => p.FirstName); 
    m.Map(p => p.LastName); 
}); 
+0

啊確定冷靜,我想試試。從我閱讀的一點點文檔中,我認爲組件被用於我的場景,但是倒退 - 在那裏你有兩張表,你想映射到一個類。 – cbp 2009-07-02 07:43:29