ошибка отображения одной таблицы на иерархию - PullRequest
0 голосов
/ 05 октября 2010

Я получил следующие сопоставления

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false">
  <subclass name="Module.CRM.Models.CallRecord, Module.CRM" extends="Gate.Calls.CallRecord, Gate.SDK" discriminator-value="call_record_id">
    <property name="ContactId" column="contact_id" />
    <property name="CompanyId" column="company_id" />
  </subclass>
</hibernate-mapping>

И

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false">
  <class name="Gate.Calls.CallRecord, Gate.SDK" table="call_records" lazy="true">
    <id name="Id" column="id">
      <generator class="sequence">
        <param name="sequence">call_records_id_seq</param>
      </generator>
    </id>

    <property name="UserId" column="user_id" type="integer" />
    <property name="SiteId" column="site_id" type="integer" />
    <property name="PhoneNumber" column="phone_number" type="string" />
    <property name="CreatedAt" column="created_at" type="datetime" />
    <property name="Duration" column="duration" type="integer" />
    <property name="IsInbound" column="is_inbound" type="boolean" />
    <property name="HangupCause" column="hangup_cause" type="integer" />
    <property name="RingDuration" column="ring_duration" type="integer" />

  </class>
</hibernate-mapping>

Я получаю следующую ошибку

Не найдено дискриминатора для Module.CRM.Models.CallRecord.

Разве я не указал дискриминатор?

Редактировать

Закончено еще какое-то исследование: я не должен использовать дискриминатор. call_record_id в crm_call_records указывает на id в call_records. Как должны выглядеть файлы сопоставления?

1 Ответ

1 голос
/ 28 октября 2010

Вам необходимо добавить дискриминатор в отображение CallRecord.т.е.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false">
  <class name="Gate.Calls.CallRecord, Gate.SDK" table="call_records" lazy="true">
    <id name="Id" column="id">
      <generator class="sequence">
        <param name="sequence">call_records_id_seq</param>
      </generator>
    </id>
    <discriminator column="Discriminator"
            not-null="true"
            type="System.String"/>
    <property name="UserId" column="user_id" type="integer" />
    <property name="SiteId" column="site_id" type="integer" />
    <property name="PhoneNumber" column="phone_number" type="string" />
    <property name="CreatedAt" column="created_at" type="datetime" />
    <property name="Duration" column="duration" type="integer" />
    <property name="IsInbound" column="is_inbound" type="boolean" />
    <property name="HangupCause" column="hangup_cause" type="integer" />
    <property name="RingDuration" column="ring_duration" type="integer" />

  </class>

Вот пример Ayende - NHibernate Mapping - Наследование

...