1

もちろん、既存のトピックを検索し、そこに示されている解決策を試しましたが、成功しませんでした。たぶん、誰かが追加のヒントを与えることができます。

シナリオは次のとおりです。

複数のアセンブリからのエンティティを処理するために、1 つの NHibernate プロジェクトを使用します。処理されるアセンブリには、いくつかのエンティティと、埋め込みリソースとしてコンパイルされたマッピング ファイルが含まれます。

namespace projectName.namespace
{
    public class Entity
    {
        public virtual Guid Id { get; set; }
        public virtual string IsoCode { get; set; }
    }
}

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="projectName.namespace.Entity,projectName">
        <id name="Id" column="EntityId">
          <generator class="guid" />
        </id>
    </class>
</hibernate-mapping>

NHibernate プロジェクトでは、アセンブリは次の方法でロードされます。

Assembly assembly = Assembly.Load(assemblySourcePath);

最後に、マッピングを構成に追加すると、NHibernate は MappingException をスローします。

configuration.AddAssembly(assembly);

その問題を解決する方法が本当にわかりません。あなたの誰かはいますか?

よろしく!

編集1ここに例外出力があります(翻訳および要約):

NHibernate.MappingException: Could not compile the mapping document (the one from above)
persistent class "classname, assemblyname" not found -> System.IO.FileNotFoundException: file or assembly "assemblyname" or one of its dependencies not found.

編集 2 Fluent NHibernate をもう一度試してみました。マッピング クラスは再び検出されますが、エンティティは検出されません。

persistent class dom.Project.BusinessEntities.Class, dom.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found

よろしく

編集 3 ソリューション ソリューションは非常に単純で、ドメイン ルートの下にあるかどうかに関係なく、nhibernate が任意のアセンブリをロードできることを示しています。グローバル アセンブリ キャッシュに読み込まれるアセンブリをインストールすると、nhibernate はその抗議を停止します :-)

よろしくお願いします。

4

1 に答える 1

0

Nhibernate は、現在のアプリ ドメイン ルート パスの下にあるアセンブリからのみエンティティを読み込むことができます。bin/Debug の下の一時フォルダー内にアセンブリを配置して、それをポイントしてみてください-問題を解決する必要があります

于 2012-09-05T11:18:15.593 に答える