NHibernate映射问题-我可以映射多个程序集吗?
我有以下映射文件:NHibernate映射问题-我可以映射多个程序集吗?,nhibernate,orm,nhibernate-mapping,Nhibernate,Orm,Nhibernate Mapping,我有以下映射文件: <?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
<?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:来自表设备的关联引用未映射的类:Project2.Domain.Account
需要明确的是,Account类与Equipment类位于不同的程序集中。Account类所在的项目有自己的hibernate.cfg.xml
基本上,我需要一种方法来引用hibernate.cfg.xml文件中的多个映射程序集。这是可能的吗?这是可能的,您只需在映射文件中指出这一点(看起来您这样做了)
在创建sessionfactory之前,您是否将这两个程序集都添加到了NHibernate配置中?有可能,您只需在映射文件中指出这一点(看起来您已经这样做了)
在创建sessionfactory之前,是否将这两个程序集都添加到NHibernate配置中?您可以这样做:
<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>
...
...
...
您可以这样做:
<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>
...
...
...
感谢您的回复。事实上,我最后做的有点不同。我刚刚从hibernate.cfg中删除了标记,并在.hbm.xml文件中使用了完全限定名。谢谢 感谢您的回复。事实上,我最后做的有点不同。我刚刚从hibernate.cfg中删除了标记,并在.hbm.xml文件中使用了完全限定名。谢谢 是的,这个就行了。它不必在一个程序集中,因为您可以有多个
标记。它不必在一个程序集中,因为您可以有多个
标记。