0

我遇到了NHibernate.Search,它突然停止工作,它無法創建文件或讀取索引文件。NHibernate.Search,未創建的Lucene索引文件

NHibernate的似乎正確加載:

 
2009-01-20 17:37:17,751 [1] DEBUG NHibernate.Impl.SessionFactoryImpl - 
    instantiating session factory with properties: {use_reflection_optimizer=True, 
    hibernate.search.analyzer=Lucene.Net.Analysis.SimpleAnalyzer, Lucene.Net, 
    hibernate.search.default.directory_provider=NHibernate.Search.Store.FSDirectoryProvider, 
    NHibernate.Search, dialect=NHibernate.Dialect.PostgreSQL82Dialect, 
    connection.driver_class=NHibernate.Driver.NpgsqlDriver, 
    hibernate.search.default.indexBase.create=true, 
    hibernate.search.default.indexBase=c:\temp\Lucene, 
    connection.provider=NHibernate.Connection.DriverConnectionProvider, 
    connection.connection_string_name=Dev} 

但在那之後,似乎沒有任何工作。沒有文件被創建,並且c:\ temp \ Lucene也不會被創建。我檢查了權限,我似乎無法找到任何問題。

這對我來說已經成了一個死衚衕,而且對於如何在我的調試中繼續前進並沒有任何線索。任何反饋非常感謝。

好吧,更新:

我已經想通了,FullTextIndexEventListener.Initialize(NHibernate.Cfg.Configuration CFG)永遠不會被調用。

我認爲當添加監聽器到NHibernate配置會觸發它(因爲它實現了NHibernate.Event.IInitializable),但是當檢查NHibernate的源代碼時,這似乎並不是這種情況?

奇怪的是,它在我的同事開發機器上工作,沒有這個手動調用。我們運行相同的源代碼和相同的庫。

回答

1

好了,想通了,不知怎的,我的機器已經加快的ActiveRecord和NHibernate之間的初始化階段,這意味着因爲我註冊了事件偵聽NHibernate的On_ApplicationStart(),NHibernate的已經初始化,爲此從來沒有調用初始化()在聽衆中。

在我的同事電腦上,NHibernate在註冊eventlisteners時尚未初始化,因此調用Initialize。

這是ActiveRecord設計中的一個缺陷,因爲我需要在將某些東西註冊到NHibernate之前初始化AR。有點像一個catch 22.

希望有人會覺得這個信息有用。