0

我遇到了 NHibernate.Search 的问题,它突然停止工作,它根本无法创建文件或读取索引文件。

NHibernate 似乎可以正确加载它:

2009-01-20 17:37:17,751 [1] 调试 NHibernate.Impl.SessionFactoryImpl -
  使用属性实例化会话工厂:{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=开发者}

但在那之后,似乎没有任何效果。没有文件被创建,并且 c:\temp\Lucene 也从未被创建。我已经检查了权限,我似乎找不到任何问题。

这对我来说已成为死胡同,并且不知道如何进行调试。非常感谢任何反馈。

好的,更新:

我发现 FullTextIndexEventListener.Initialize(NHibernate.Cfg.Configuration cfg) 永远不会被调用。

我假设当将监听器添加到 NHibernate 配置时会触发它(因为它实现了 NHibernate.Event.IInitializable),但是在检查 NHibernate 的源时,这似乎不是这种情况?

奇怪的是,它可以在我的同事开发机器上运行,而无需手动调用。我们运行相同的源代码以及相同的库。

4

1 回答 1

1

好的,发现不知何故,我的机器一直在加快 ActiveRecord 和 NHibernate 之间的初始化阶段,这意味着自从我将 EventListeners 注册到 NHibernate On_ApplicationStart() 后,NHibernate 已经初始化,因此永远不会在侦听器中调用 Initialize()。

在我同事的计算机上,NHibernate 在注册事件侦听器时尚未初始化,因此调用了 Initialize。

这是 ActiveRecord 设计中的一个缺陷,因为我需要先初始化 AR,然后才能将某些内容注册到 NHibernate。有点像第22条。

希望有人会发现此信息有用。

于 2009-01-21T14:47:41.247 回答