NHibernate版本2.1.2.4000映射的新手问题

时间:2010-02-05 15:18:40

标签: nhibernate-mapping

我在NHibernate中看起来似乎是一个简单的映射问题,但是我一直在努力寻找问题的解决方案好几天了,并且会很感激一些帮助。我在VS2005下使用VB.NET。我的VS2005解决方案结构如下:

解决方案:PsalertsIP
项目(大会):核心

文件夹数据(命名空间PsalertsIp.Core.Data)
          包含用于与存储库类通信的接口           示例:PsalertsEventRepo实现IPsalertsEventRepo

Folder Domain(Namespace 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>  

当我尝试通过NUnit对NHibernate环境进行简单测试时(感谢这不是单元测试,但是需要一个简单的工具来测试NHibernate设置),测试失败了,我观察到以下输出在NUnit中:

PsalertsIp.Tests.Data.PSALERTSEventRepoTests(TestFixtureSetUp):
System.TypeInitializationException:'Nested'的类型初始值设定项引发异常   ----&GT; NHibernate.MappingException:无法编译映射文档:PsalertsEvent.hbm.xml
  ----&GT; NHibernate.MappingException:持久化类Core.Domain.PsalertsEvent,未找到Core   ----&GT; System.TypeLoadException:无法从程序集“Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”加载类型“Core.Domain.PsalertsEvent”。

我怀疑问题可能与VS2005中的解决方案结构有关,但我测试了多个不同的程序集/命名空间排列无济于事。

1 个答案:

答案 0 :(得分:2)

我认为您需要将hibernate-mapping元素上的namespace属性更改为“PsalertsIP.Core.Domain”(如上所述)。

还要确保hibernate-mapping元素上的assembly属性指定项目的完整程序集名称(右键单击项目 - &gt; Properties - &gt; Application选项卡)。

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