2009-06-16 5 views
3

J'ai un exemple simple; une classe concrète qui hérite d'une classe générique abstraite qui implémente une interface.NHibernate: Ces classes référencées par 'extends' n'ont pas été trouvées

ie. StringProperty -> AbstractProperty <T> -> IProperty

Je reçois l'erreur suivante ...

NHibernate.MappingException: These classes referenced by 'extends' were not found: 
NhibernateTest.AbstractGenericProperty`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], PromoNhibernateTest 
    at NHibernate.Cfg.MappingsQueue.CheckNoUnavailableEntries() 
    at NHibernate.Cfg.Configuration.SecondPassCompile() 
    at NHibernate.Cfg.Configuration.BuildSessionFactory() 

J'utilise les attributs NHibernate qui produisent le mappage suivant ...

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="NhibernateTest.AbstractGenericProperty`1, PromoNhibernateTest" lazy="false" table="Properties"> 
    <id> 
     <generator class="identity" /> 
    </id> 
    <discriminator column="Name" type="String" /> 
    </class> 
    <subclass name="NhibernateTest.StringProperty, PromoNhibernateTest" lazy="false" extends="NhibernateTest.AbstractGenericProperty`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], PromoNhibernateTest" discriminator-value="string" /> 
</hibernate-mapping> 

S'il vous plaît conseiller quel est le problème avec la cartographie.

Merci,

Ted.

Répondre

0

Le problème est qu'il n'est pas possible de mapper AbstractProperty.

Vous ne pouvez pas mapper des types génériques ouverts, même si vous créez également des mappages de sous-classes qui définissent le type générique. Je ne sais pas exactement pourquoi NHibernate commence seulement à se plaindre quand il arrive au mappage de la sous-classe, mais je suis à peu près sûr que le problème est avec le mappage AbstractProperty, pas la sous-classe.

Questions connexes