2011-06-07 68 views
0

我已經使用nhibernate幾個月了,我開始對它有信心,但仍有很多事情需要我去探索。
到目前爲止,我已將地址映射爲組件。這裏有一個例子:用nhibernate映射不同的地址

<class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Lead" table="Leads"> 
    <id name="Code" type="System.Guid"> 
     <column name="LeadCode" /> 
     <generator class="guid.comb" /> 
    </id> 
    <property name="FirstName"> 
     <column name="FirstName" length="40" not-null="true" /> 
    </property> 
    <property name="LastName"> 
     <column name="LastName" length="40" not-null="true" /> 
    </property> 
    <component name="PrimaryAddress" class="Address"> 
     <property name="Street" type="AnsiString"> 
     <column name="PrimaryStreet" length="100" /> 
     </property> 
     <property name="City"> 
     <column name="PrimaryCity" length="30" /> 
     </property> 
     <property name="State"> 
     <column name="PrimaryState" length="20" /> 
     </property> 
     <property name="PostalCode"> 
     <column name="PrimaryPostalCode" length="10" /> 
     </property> 
     <property name="Country"> 
     <column name="PrimaryCountry" length="40" /> 
     </property> 
    </component> 
    <component name="AlternativeAddress" class="Address"> 
     <property name="Street"> 
     <column name="AlternativeStreet" length="100" /> 
     </property> 
     <property name="City"> 
     <column name="AlternativeCity" length="30" /> 
     </property> 
     <property name="State"> 
     <column name="AlternativeState" length="20" /> 
     </property> 
     <property name="PostalCode"> 
     <column name="AlternativePostalCode" length="10" /> 
     </property> 
     <property name="Country"> 
     <column name="AlternativeCountry" length="40" /> 
     </property> 
    </component> 
    </class> 
</hibernate-mapping> 

現在,我想擴展這個模型,並在不同的表中分開地址,以便一個Lead可以有不同類型的地址。
我想 - 可能 - 使用枚舉來管理不同類型的地址。 每一個幫助或鏈接到文件,我可以找到更多的信息,將不勝感激。

回答

1

由於您已將地址映射爲組件,因此您可能將它們視爲值類型。如果你想保留它們作爲值類型,那麼你可能需要在你的線索和你的地址值(可以稱爲LeadAddress)之間創建一箇中間實體,它包含指定地址類型的Enum和地址本身,它是值鍵入,當然如果你想要有一個雙向關係的話可以回到Lead的參考。然後,您的潛在客戶可以收集「LeadAddress」作爲一對多關係。

映射枚舉在這裏回答: How to persist an enum using NHibernate

+0

我會說是的,我認爲該地址是概念上的值類型。感謝您的參考。我必須深入挖掘這一點。 – LeftyX 2011-06-08 08:01:39