2009-06-16 7 views
3

Ich habe ein einfaches Beispiel; Eine konkrete Klasse, die eine abstrakte generische Klasse erbt, die eine Schnittstelle implementiert.NHibernate: Diese von 'extends' referenzierten Klassen wurden nicht gefunden

dh. String -> AbstractProperty <T> -> IProperty

ich folgende Fehlermeldung erhalten ...

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() 

Ich verwende NHibernate Attribute, die die folgende Abbildung erzeugen ...

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

Bitte teilen Was stimmt nicht mit dem Mapping?

Danke,

Ted.

Antwort

0

Das Problem ist, dass es nicht möglich ist, AbstractProperty zuzuordnen.

Sie können offene generische Typen nicht zuordnen, auch wenn Sie auch Unterklassenzuordnungen erstellen, die den generischen Typ definieren.

Ich weiß nicht genau, warum NHibernate nur anfängt, sich zu beschweren, wenn es die Unterklassenzuordnung erreicht, aber ich bin ziemlich sicher, dass das Problem mit dem AbstractProperty Mapping, nicht der Unterklasse ist.

Verwandte Themen