2009-06-16 6 views
3

У меня есть простой пример; конкретный класс, наследующий абстрактный общий класс, реализующий интерфейс.NHibernate: Эти классы, на которые ссылается 'extends', не были найдены

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

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

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

Я использую NHibernate атрибуты, которые производят следующее отображение ...

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

Пожалуйста посоветуйте что не так с отображением.

Thanks,

Ted.

ответ

0

Проблема в том, что невозможно отобразить AbstractProperty.

Вы не можете отображать открытые общие типы, даже если вы также создаете сопоставления подклассов, которые определяют общий тип.

Я не совсем понимаю, почему NHibernate только начинает жаловаться, когда попадает в подклассовое сопоставление, но я уверен, что проблема связана с отображением AbstractProperty, а не с подклассом.

Смежные вопросы