针对NHibernate 3.2 Binary编译NHibernate搜索代码

时间:2012-01-06 03:09:48

标签: nhibernate nhibernate-search

我从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)'。

有人试图让NHibernate Search与3.2兼容吗?

1 个答案:

答案 0 :(得分: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

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