1

すべてのドメイン ロジックとドメイン オブジェクト (例: ) を保持するアセンブリFoo.Barがあります。public class Projectpublic interface IProjectRepository

また、 NHibernate ベースの実装を保持する NHinbernate データ アクセス レイヤーとして機能するアセンブリFoo.Bar.Dataもあります。IProjectRepositoryこれは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アセンブリに追加すると、すべて正常に動作します。しかし、ドメイン アセンブリにデータ アクセスや NHinbernate 実装の詳細を含めたくありません。これはベストプラクティスになりがちですよね?この種のセットアップは良い方法ではありませんか?

NHibernate にFoo.Bar.Data * アセンブリ内のマッピング ファイルを検索させるにはどうすればよいですか?

4

1 に答える 1

3

私がしなければならないことは、追加することだけであることがわかりました

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

要素内の私のhibnerate構成に<session-factory>

于 2012-06-19T07:43:53.647 に答える