2010-10-05 5 views
0

Je suis les applications suivantesseule table par hiérarchie d'erreur de cartographie

<?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> 

Et:

<?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> 

Je reçois l'erreur suivante

Aucun discriminateur trouvé pour le module. CRM.Models.CallRecord.

N'ai-je pas spécifié un discriminateur?

Modifier

fait quelques recherches plus poussées: discriminateur est pas ce que je devrais utiliser. call_record_id dans crm_call_records points sur id dans call_records. A quoi devraient ressembler les fichiers de mapping?

Répondre

1

Vous devez ajouter un discriminateur au mappage CallRecord. i.e.

<?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> 

Voici un exemple Ayende - NHibernate Mapping – Inheritance

+0

Je n'ai pas une colonne discriminante et il est une base de données de l'héritage que je ne veux pas toucher. – jgauffin

+0

Ensuite, je crois que vous êtes dans un pétrin. A partir du document nHibernate http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-discriminator - L'élément est requis pour la persistance polymorphe à l'aide du mappage table-par-classe-hiérarchie stratégie – Iain

Questions connexes