1

我通過流利的NHibernate教程在http://wiki.fluentnhibernate.org/Getting_started工作,項目編譯罰款。運行時錯誤,當試圖運行流利NHibernate教程示例

但是,我得到一個運行時錯誤,我似乎無法解決它。錯誤發生在您可以在教程中看到的CreateSessionFactory方法中。那就是:

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

} 

我覺得最helpfule要做的是給你的異常鏈(是一個真正的字)從最外層例外內最例外:

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文件夾中。基於googling的錯誤,我設置了對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。請記住,要完全複製我的環境,您需要將來自here的所有文件放到output/bin目錄中。

賽斯

回答

5

我覺得自己像一個白癡,但在一天結束時,映射問題是由於我已經命名項目FluentNHibernate(在我自己的防禦中它是在一個SAMPLES文件夾中)的事實引起的,但那是導致映射失敗。

內部Visual Studio默認程序集名稱爲FluentNHibernate,並導致運行時錯誤。將程序集重命名爲ConsoleApplication將其修復。

Seth

0

您可能還需要:

  • Castle.Core.dll
  • Castle.DynamicProxy2.dll
+0

感謝您的建議。如前所述,因爲這些文件是在流利的nhibernate下載zip ...他們已經被添加到我的bin文件夾。但是,根據您的建議,我在我的項目中添加了對這些文件的引用。但我得到了同樣的結果。 Seth – 2010-08-18 02:40:19

0

僅僅因爲你的功能NHibernate項目編譯,即並不意味着你的映射是正確的。

外部例外(與FluentNHibernate組件可能是一個紅鯡魚)。

試着評論一下你所有的nhibernate映射,除了最簡單,最簡單的一點 - 然後看看它是否有效。如果是這樣,逐漸取消註釋,直到找到失敗的位。

2

下載Fluent NHibernate源碼發佈,然後看看示例項目;然後你可以比較這些項目對你所擁有的項目的引用。

+0

James 我在想那件事,但我找不到一個沒有git的源代碼的方法。我仍然在svn。我可以得到git(呵呵),因爲它很小,但是想知道是否有一種方法可以在沒有它的情況下獲得源代碼? – 2010-08-18 13:49:46

+0

Seth,它是2010年,幫你一個忙,下載一個git客戶端。烏龜(GUI)http://code.google.com/p/tortoisegit/或msysgit(命令行)http://code.google.com/p/msysgit/ – anthony 2010-08-18 17:50:06

+0

Seth:[fluentnhibernate.org/downloads](http ://fluentnhibernate.org/downloads)將它們放在右邊的底部;他們只適用於個人版本,而不是特定版本。如果您希望1.1的源代碼專用,Github允許您在[下載部分進行回購]下載一個標籤的zip文件(http://github.com/jagregory/fluent-nhibernate/downloads)。 – 2010-08-18 18:43:01

相關問題