У меня проблема с отображением общего класса. Поэтому у меня есть класс 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>
Что я сделал не так? Это сопоставление не работает, и я не понимаю, почему. Я уже проверял имена сборки и пространства имен, и все в порядке. Какие-либо предложения? Я буду рад любой помощи в этом вопросе.
Что вы подразумеваете под «картированием не работает»? – Thierry
Когда я запустил проект в Visual Studio, я получил исключение с этим текстом: «Ссылки на ассоциацию, не выбранные: BackOffice.Core.Domains.SpecValue». Но у меня есть сопоставление для этого класса, и я не понимаю, почему он сказал мне, что этот класс не отображается – IgorVM
Можете ли вы показать свой код инициализации NHibernate, пожалуйста? То есть, код, который устанавливает объект «Конфигурация», который используется для создания сессионных фабрик? –