0

我从http://nhcontrib.svn.sourceforge.net/viewvc/nhcontrib/trunk/src/下载了源代码,更改了对 NHibernate 3.2 版本的引用。当我编译时,我收到以下错误/警告消息

  • 错误 1 ​​'NHibernate.Search.Impl.FullTextSessionImpl' 没有实现接口成员 'NHibernate.ISession.QueryOver(string, System.Linq.Expressions.Expression>)'
  • 错误 2 'NHibernate.Search.Impl.FullTextSessionImpl' 没有实现接口成员 'NHibernate.ISession.QueryOver(string)'
  • 错误 3 'NHibernate.Search.Impl.FullTextSessionImpl' 没有实现接口成员 'NHibernate.ISession.Merge(string, T)'
  • 错误 4 'NHibernate.Search.Impl.FullTextSessionImpl' 没有实现接口成员 'NHibernate.ISession.Merge(T)'
  • 警告 5 成员“NHibernate.Search.Filter.ChainedFilter.Bits(Lucene.Net.Index.IndexReader)”覆盖过时的成员“Lucene.Net.Search.Filter.Bits(Lucene.Net.Index.IndexReader)”。将 Obsolete 属性添加到“NHibernate.Search.Filter.ChainedFilter.Bits(Lucene.Net.Index.IndexReader)”。

有人尝试过获得与 3.2 兼容的 NHibernate Search 吗?

4

1 回答 1

0

我刚刚尝试下载 Nhibernate.Search 的源代码,并针对最新版本的 NHibernate (3.2) 和 Lucene.Net (2.9.4) 进行编译。我没有对它进行广泛的测试,但到目前为止一切似乎都有效。

您需要做的就是将您提到的方法映射到session.[method_name]()(见下文),并替换对 的所有引用ISet<>Iesi.Collections.Generic.ISet<因为 .Net 4 框架包含一个ISet<>会产生冲突的本机类。


将此代码添加到FullTextSessionImpl类中:

#region ISession Members


    public T Merge<T>(string entityName, T entity) where T : class
    {
        return session.Merge<T>(entityName, entity);

    }

    public T Merge<T>(T entity) where T : class
    {
        return session.Merge<T>(entity);

    }

    public IQueryOver<T, T> QueryOver<T>(string entityName, Expression<Func<T>> alias) where T : class
    {
        return session.QueryOver<T>(entityName, alias);

    }

    public IQueryOver<T, T> QueryOver<T>(string entityName) where T : class
    {
        return session.QueryOver<T>(entityName);

    }

    #endregion

如果您仍然无法管理,我可以将编译后的二进制文件发送给您。

于 2012-01-26T20:07:01.570 回答