2013-09-05 2 views
0

У меня проблема с отображением общего класса. Поэтому у меня есть класс Spec:Отображение NHibernate общего класса

namespace BackOffice.Core.Domains 
{ 
    public abstract class Spec: BaseDomain 
    { 
     public virtual string Name { get; set; } 
     public virtual TypeSpecValue TypeSpecValue { get; set; } 
    } 

    public enum TypeSpecValue 
    { 
     StringType = 0, 
     DecimalType = 1, 
     Booltype = 2 
    }; 
} 

Для этого класса я есть отображение и работать. Тогда у меня есть общий класс SpecValue:

namespace BackOffice.Core.Domains 
{ 
    public class SpecValue<T>: BaseDomain where T : Spec 
    { 
     public virtual T Spec { get; set; } 
     public virtual string StrValue { get; set; } 
     public virtual decimal NumValue { get; set; } 
     public virtual bool BoolValue { get; set; } 
    } 
} 

Так что мне нужно отобразить этот класс. Я попробовал этот путь после прочтения статьи this

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
        assembly="Transport.Core" 
        namespace="BackOffice.Core.Domains"> 
    <class name="SpecValue`1[BackOffice.Core.Domains.Spec], Transport.Core" table="spec_value"> 
    <id name="Id" unsaved-value="0" type="int"> 
     <column name="id" not-null="true"/> 
     <generator class="native"/> 
    </id> 
    <many-to-one name="Spec" class="BackOffice.Core.Domains.Spec,Transport.Core" column="spec_id" fetch="join"/> 
    <property name="StrValue" type="String"> 
     <column name="str_value" /> 
    </property> 
    <property name="NumValue" type="Decimal"> 
     <column name="num_value" /> 
    </property> 
    <property name="BoolValue" type="YesNo"> 
     <column name="bool_value" /> 
    </property> 
    <many-to-one name="Model" class="BaseModel,Transport.Core" column="model_id" cascade="none" /> 
    </class> 
</hibernate-mapping> 

Что я сделал не так? Это сопоставление не работает, и я не понимаю, почему. Я уже проверял имена сборки и пространства имен, и все в порядке. Какие-либо предложения? Я буду рад любой помощи в этом вопросе.

+1

Что вы подразумеваете под «картированием не работает»? – Thierry

+0

Когда я запустил проект в Visual Studio, я получил исключение с этим текстом: «Ссылки на ассоциацию, не выбранные: BackOffice.Core.Domains.SpecValue». Но у меня есть сопоставление для этого класса, и я не понимаю, почему он сказал мне, что этот класс не отображается – IgorVM

+0

Можете ли вы показать свой код инициализации NHibernate, пожалуйста? То есть, код, который устанавливает объект «Конфигурация», который используется для создания сессионных фабрик? –

ответ

0

Убедитесь, что ваш файл сопоставления задан как «Встроенный ресурс» в свойствах. В противном случае файл не будет включен в DLL, которая была построена, и NHibernate не сможет его найти.

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