1

http://wiki.fluentnhibernate.org/Getting_startedでFluentNHibernateチュートリアルを実行したところ、プロジェクトは正常にコンパイルされました。

ただし、ランタイムエラーが発生し、解決できないようです。エラーは、チュートリアルで確認できるCreateSessionFactoryメソッドで発生しています。ここにあります:

private static ISessionFactory CreateSessionFactory()
{
    return Fluently.Configure()
        .Database
        (
            SQLiteConfiguration.Standard
                .UsingFile(DbFile)
        )
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<FluentNHibernateSample.Program>())
        .ExposeConfiguration(BuildSchema)
        .BuildSessionFactory();

}

最も役立つのは、最も外側の例外から最も内側の例外までの例外チェーン(実際の単語)を提供することだと思います。

An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
    An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
        Could not compile the mapping document: (XmlDocument)
            persistent class FluentNHibernateSample.Entities.Employee, FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null not found
                Could not load file or assembly 'FluentNHibernate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

チュートリアルでは、参照の設定方法が明確ではなかったため(または、最も内部の例外に基づいて少なくとも不完全に見える)、コンパイルされたアセンブリをhttp://fluentnhibernate.org/downloads/releases/fluentnhibernate-1.1.zipから取得してコピーしました。それらをlibsフォルダーに入れます。エラーのグーグルに基づいて、FluentNHibernate、NHibernate、およびNHibernate.ByteCode.Castleアセンブリへの参照を設定しました。ダウンロードページからすべてのdllをbinディレクトリにコピーしたところ、すべての参照が解決されると思いました。(それはそれがどのように機能するかについての私の理解です)。いずれにせよ、ここに私がbinにコピーしたファイルのリストがあります。

Antlr3.Runtime.dll
FluentNHibernate.dll
FluentNHibernate.exe
FluentNHibernate.pdb
FluentNHibernate.vshost.exe
FluentNHibernate.vshost.exe.manifest
FluentNHibernate.xml
Iesi.Collections.dll
Iesi.Collections.xml
log4net.dll
log4net.xml
NHibernate.ByteCode.Castle.dll
NHibernate.dll
NHibernate.xml

System.Data.Sqliteアセンブリもbinにコピーしました。

私の一生の間、私は問題が何であるかを理解することができません。私は考えられるすべてのことを試し、複数のエラーメッセージをグーグルで検索しましたが、何もうまくいきませんでした。

ヘルプ!私はこれに何時間も無駄にしました。

編集
私はプロジェクトのソースファイルをhttp://dl.dropbox.com/u/8824836/FluentNHibernateExample.zipに置きました。私の環境を完全に複製するには、ここからすべてのファイルをoutput/binディレクトリに配置する必要があることに注意してください。

セス

4

4 に答える 4

5

私はこれを馬鹿に感じますが、結局のところ、マッピングの問題は、プロジェクトにFluentNHibernateという名前を付けた(私自身の防御ではSAMPLESフォルダーにあった)という事実が原因でしたが、それが原因でマッピングが失敗していました。

内部的には、Visual Studioはアセンブリ名をFluentNHibernateにデフォルト設定しており、これがランタイムエラーの原因でした。アセンブリの名前をConsoleApplicationに変更すると、修正されました。

セス

于 2010-09-01T02:38:00.960 に答える
2

Fluent NHibernateソースディストリビューションをダウンロードしてから、サンプルプロジェクトを見てください。次に、それらのプロジェクトが持っている参照を自分のプロジェクトが持っている参照と比較できます。

于 2010-08-18T08:20:47.700 に答える
0

また、次のものが必要になる場合があります。

  • Castle.Core.dll
  • Castle.DynamicProxy2.dll
于 2010-08-18T02:17:09.010 に答える
0

流暢なNHibernateプロジェクトがコンパイルされるからといって、それはマッピングが正しいことを意味するわけではありません。

外側の例外(FluentNHibernateアセンブリに関係するのは赤いニシンかもしれません)。

最も単純で最も簡単なビットを除いて、すべてのnhibernateマッピングをコメントアウトしてみてください。そして、それが機能するかどうかを確認してください。もしそうなら、失敗するビットが見つかるまで、徐々にコメントを外してください。

于 2010-08-18T02:56:58.907 に答える