我有以下映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Project1.Accounts"
namespace="Project1.Core.Domain">
<class name="Equipment" table="Equipment">
<id name="ID" column="ID">
<generator class="identity"></generator>
</id>
<property name="Name" />
<property name="Description" />
<property name="AccountID" />
<property name="EquipmentTypeID" />
<many-to-one name="Account" class="Project2.Core.Domain.Account, Project2.Core" column="AccountID"/>
<many-to-one name="EquipmentType" class="Insight.IT.Accounts.Core.Domain.EquipmentType, Insight.IT.Accounts" column="EquipmentTypeID"/>
</class>
</hibernate-mapping>
我收到以下错误:
NHibernate.MappingException:表Equipment中的关联引用了一个未映射的类:Project2.Domain.Account
只是要清楚 - Account类与Assembly类不同,它位于不同的程序集中。 Account类所在的项目拥有自己的hibernate.cfg.xml。
基本上,我看起来需要一种方法来引用hibernate.cfg.xml文件中的多个映射程序集。这可能吗?
答案 0 :(得分:3)
你可以这样做:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">...</property>
<property name="connection.driver_class">...</property>
...
<mapping assembly="MyProject.OtherAssembly"/>
</session-factory>
</hibernate-configuration>
答案 1 :(得分:1)
有可能,您只需在映射文件中指明这一点(看起来就像这样)。
在创建sessionfactory之前,您是否已将两个程序集添加到NHibernate配置中?
答案 2 :(得分:0)
感谢您的回复。实际上,我最终做的有点不同了。我刚刚从hibernate.cfg中删除了标记,并在.hbm.xml文件中使用了完全限定名。谢谢!