Проблема новичка с отображением NHibernate версии 2.1.2.4000 - PullRequest
1 голос
/ 05 февраля 2010

У меня есть то, что кажется простой проблемой картирования в NHibernate, однако я уже несколько дней пытаюсь найти решение этой проблемы и буду признателен за некоторую помощь. Я использую VB.NET под VS2005. Моя структура решения VS2005 выглядит следующим образом:

Решение: PsalertsIP
Проект (сборка): Core

Данные папки (Пространство имен PsalertsIp.Core.Data)
Содержит интерфейсы для связи с классами репозитория Пример: PsalertsEventRepo Реализует IPsalertsEventRepo

Домен папки (Пространство имен PsalertsIP.Core.Domain) Содержит все объекты домена POCO и связанные интерфейсы пример: PsalertsEvent Внедряет IPsalertsEvent

Также под сборкой 'Core' находятся файл конфигурации NHibernate и файл отображения для класса PsalertsEvent, который выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Core"
                   namespace="Core.Domain">
  <class name="PsalertsEvent" table="Source_table" lazy="true">
    <id name="Id" column="Id" type="long" unsaved-value="0"
        access="field.camelcase-underscore">
      <generator class="native" >
        <param name="sequence">My_Oracle_Sequence</param>
      </generator>
    </id>
    <property name="Substation" column="Field1" />
    <property name="BusbarId" column="Field2" />
    <property name="PlantId" column="Field3" />
    <property name="AlarmName" column="Field4" />
    <property name="AlarmStatus" column="Field5" />
    <property name="EventTime" column="Field6" />
  </class>
</hibernate-mapping>  

Когда я пытаюсь выполнить простое тестирование среды NHibernate с помощью NUnit (обратите внимание, что это не модульное тестирование, однако для тестирования установки NHibernate понадобилось простое средство), тест не пройден, и я наблюдаю следующий вывод в единицах:

PsalertsIp.Tests.Data.PSALERTSEventRepoTests (TestFixtureSetUp):
System.TypeInitializationException: инициализатор типа для 'Nested' выдал исключение.
----> NHibernate.MappingException: не удалось скомпилировать документ сопоставления: PsalertsEvent.hbm.xml
----> NHibernate.MappingException: постоянный класс Core.Domain.PsalertsEvent, Core не найден
----> System.TypeLoadException: не удалось загрузить тип 'Core.Domain.PsalertsEvent' из сборки 'Core, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null'.

Я подозреваю, что проблема может быть связана со структурой решения в VS2005, однако я протестировал несколько различных перестановок сборки / пространства имен, но безрезультатно.

1 Ответ

2 голосов
/ 05 февраля 2010

Я думаю, вам нужно изменить атрибут пространства имен в элементе hibernate-mapping на "PsalertsIP.Core.Domain" (как вы указали выше).

Также убедитесь, что атрибут сборки в элементе hibernate-mapping указывает полное имя сборки вашего проекта (щелкните правой кнопкой мыши проект -> Свойства -> вкладка Приложения).

hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
               assembly="Core"
               namespace="PsalertsIP.Core.Domain">
...