views:

314

answers:

1

I have what appears to be a simple mapping problem in NHibernate, however I have been struggling to find a solution to the problem for a number of days now, and would appreciate some assistance. I am using VB.NET under VS2005. My VS2005 solution structure is as follows:

Solution: PsalertsIP
Project (Assembly): Core

Folder Data (Namespace PsalertsIp.Core.Data)
Contains Interfaces for communication with repository classes example: PsalertsEventRepo Implements IPsalertsEventRepo

Folder Domain (Namespace PsalertsIP.Core.Domain) Contains all POCO domain objects and related interfaces example: PsalertsEvent Implements IPsalertsEvent

Also underneath the assembly 'Core' are the NHibernate config file and the mapping file for the PsalertsEvent class, which is as follows:

<?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>  

When I attempt to carry out a simple test of the NHibernate environment through NUnit (appreciate that this isn't unit testing, however needed a simple vehicle to test the NHibernate setup), the test fails, and I observe the following output in NUnit:

PsalertsIp.Tests.Data.PSALERTSEventRepoTests (TestFixtureSetUp):
System.TypeInitializationException : The type initializer for 'Nested' threw an exception.
----> NHibernate.MappingException : Could not compile the mapping document: PsalertsEvent.hbm.xml
----> NHibernate.MappingException : persistent class Core.Domain.PsalertsEvent, Core not found
----> System.TypeLoadException : Could not load type 'Core.Domain.PsalertsEvent' from assembly 'Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

I suspect that the problem may be to do with the structure of the solution in VS2005, however I have tested multiple different assembly/namespace permutations to no avail.

+2  A: 

I think you need to change the namespace attribute on the hibernate-mapping element to "PsalertsIP.Core.Domain" (as you've specified above).

Also ensure the assembly attribute on the hibernate-mapping element specifies the full assembly name of your project (right-click project -> Properties -> Application tab).

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

related questions