C# 使用nhibernate映射不同的地址

C# 使用nhibernate映射不同的地址,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我已经使用nhibernate几个月了,我开始对它充满信心,但还有很多事情需要探索。 到目前为止,我已经将地址映射为组件。下面是一个例子: <class xmlns="urn:nhibernate-mapping-2.2" mutable="true" name="Lead" table="Leads"> <id name="Code" type="System.Guid"> <column name="LeadCode" />

我已经使用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可以有不同类型的地址。
我想-可能-使用枚举来管理不同类型的地址。
如果我能找到更多信息,我将非常感谢您提供的所有帮助或指向文档的链接。

因为您已经将地址映射为组件,所以您可能将其视为值类型。如果要将它们保留为值类型,则可能需要在lead和address值(可称为LeadAddress)之间创建一个中间实体,其中包含指定地址类型的枚举以及作为值类型的地址本身,当然,如果你想有一个双向的关系,就要回到潜在客户那里。然后,您的潜在客户可以将“LeadAddress”集合作为一对多关系

映射枚举的答案如下:

我会说是的。我认为地址在概念上是一种值类型。谢谢你的推荐信。我得深入研究一下。