我已经使用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>
现在,我想扩展此模型并将地址分隔在不同的表中,以便一个潜在客户可以拥有不同类型的地址。
我希望 - 可能 - 使用枚举来管理不同类型的地址。
我将非常感谢每个帮助或链接到我可以找到更多信息的文档。
答案 0 :(得分:1)
由于您已将地址映射为组件,因此您可能将它们视为值类型。如果要将它们保存为值类型,那么您可能需要在前导和地址值之间创建一个中间实体(可以称为LeadAddress),其中包含指定地址类型的Enum,以及作为值的地址本身类型,当然,如果你想要双向关系,可以参考Lead。然后,您的潜在客户可以将“LeadAddress”作为一对多关系。
此处回答了映射枚举: How to persist an enum using NHibernate