2012-01-06 40 views
0

我從http://nhcontrib.svn.sourceforge.net/viewvc/nhcontrib/trunk/src/下載的源代碼改爲參考3.2版本的NHibernate。當我編譯我得到下面的錯誤/警告消息編譯NHibernate搜索代碼對抗NHibernate 3.2 Binary

  • 錯誤1「NHibernate.Search.Impl.FullTextSessionImpl」不實現接口成員「NHibernate.ISession.QueryOver(字符串,System.Linq.Expressions.Expression>) 「
  • 錯誤2‘NHibernate.Search.Impl.FullTextSessionImpl’不實現接口成員‘NHibernate.ISession.QueryOver(字符串)’
  • 錯誤3‘NHibernate.Search.Impl.FullTextSessionImpl’不實現接口成員」 NHibernate.ISession.Merge(字符串,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的搜索?

+0

您是否嘗試修復編譯器錯誤?顯然還有其他的接口方法必須實現。我不知道代碼,但它NH.Search可能只是通過委託 – Firo 2012-01-06 15:11:14

回答

0

我只是嘗試下載Nhibernate.Search的源代碼,並編譯它反對NHibernate的(3.2)和Lucene.Net(2.9.4)的最新版本。我沒有廣泛的測試它,但一切似乎一直工作到現在。

所有你需要做的是映射你提到session.[method_name]()方法(見下文),並更換到Iesi.Collections.Generic.ISet<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 

如果仍然無法管理,我可以送你編譯好的二進制文件。