我在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中的解决方案结构有关,但我测试了多个不同的程序集/命名空间排列无济于事。
答案 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">