Скомпилируйте код поиска NHibernate против двоичного файла NHibernate 3.2 - PullRequest
0 голосов
/ 06 января 2012

Я скачал исходный код с http://nhcontrib.svn.sourceforge.net/viewvc/nhcontrib/trunk/src/ изменил ссылку на версию 3.2 NHibernate. Когда я скомпилировал, я получил следующие сообщения об ошибках / предупреждения

  • Ошибка 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)». Добавьте устаревший атрибут в «NHibernate.Search.Filter.ChainedFilter.Bits (Lucene.Net.Index.IndexReader)».

Кто-нибудь когда-нибудь пытался получить NHibernate Search, совместимый с 3.2?

1 Ответ

0 голосов
/ 27 января 2012

Я только что попытался загрузить исходный код 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

Если вы все еще не можете управлять, я могу отправить вам скомпилированные двоичные файлы.

...