сопоставление разных адресов с помощью nhibernate - PullRequest
0 голосов
/ 07 июня 2011

Я использую 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 Ответ

1 голос
/ 07 июня 2011

Поскольку вы сопоставили адреса как компоненты, вы, вероятно, рассматриваете их как типы значений. Если вы хотите сохранить их как типы значений, то вам, вероятно, нужно создать промежуточную сущность между вашим лидом и значением вашего адреса (может называться LeadAddress), которая содержит Enum, обозначающий тип адреса, и сам адрес, который является значением введите, и, конечно, ссылку обратно на Lead, если вы хотите иметь двунаправленные отношения. Ваш лидер может затем иметь коллекцию "LeadAddress" как отношения один ко многим.

Ответы на сопоставления даны здесь: Как сохранить перечисление с помощью NHibernate

...