1

我有一个程序集Foo.Bar,它包含我所有的域逻辑和我的域对象(例如public class Projectpublic interface IProjectRepository)。

我还有一个程序集Foo.Bar.Data作为我的 NHibernate 数据访问层,它包含IProjectRepository基于 NHibernate 的实现。它引用Foo.Bar并包含映射文件,例如Project.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Foo.Bar"
                   namespace="Foo.Bar.Domain" default-lazy="false">
  <class name="Project">
    <id name="Id" column="ID" />
    <property name="Customer" column="CUSTOMER" />
  </class>
</hibernate-mapping>

不幸的是,使用此设置我得到以下异常:

NHibernate.MappingException:没有持久性:Foo.Bar.Domain.Project

NHibernate 日志说:

WARN NHibernate.Cfg.Configuration (null) - 在程序集中找不到映射文档:Foo.Bar,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null

但是,如果我将映射文件添加到Foo.Bar组件,一切正常。但我真的不希望任何数据访问或 NHibernate 实现细节到我的域程序集中。这往往是最佳做法,对吧?这种设置不是一个好方法吗?

如何让 NHibernate 在Foo.Bar.Data * 程序集中找到映射文件?

4

1 回答 1

3

原来我所要做的就是添加

<mapping assembly="Foo.Bar.Data"/> 

<session-factory>到我在元素中的休眠配置。

于 2012-06-19T07:43:53.647 回答