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文件中使用了完全限定名。谢谢

是的,这个就行了。它不必在一个程序集中,因为您可以有多个
标记。它不必在一个程序集中,因为您可以有多个
标记。