2011-03-18 2 views
0

Я недавно загрузил и установил NHibernate 3.1. Есть 2 новых DLL, которые я скопировал по установке 3.0. Вопрос №1: Это все, что мне нужно?NHibernate 3.1 разбивает мой код, или?

В моей системе я реализовал пользовательский генератор идентификаторов, он работает с 3.0, но я получаю сообщение об ошибке «Не удалось интерпретировать стратегию генератора идентификаторов» с 3.1, никаких других изменений не было сделано. Вопрос №2: Что изменилось в 3.1, что то, что я сделал в версии 3.0, больше не работает?

Вот пример моего пользовательского класса генератора.

public class IdGenerator : TableGenerator 
{ 
    public override object Generate(ISessionImplementor session, object obj) 
    { 
     if(session.Connection.ToString().ToLower().IndexOf("sqlclient") > 0) 
     { 
      IQuery query = session.GetNamedSQLQuery("GenerateSQLServerId"); 
      return Convert.ToInt32(query.UniqueResult()); 
     } 
     else if (session.Connection.ToString().ToLower().IndexOf("oracle") > 0) 
     { 
      IQuery query = session.GetNamedSQLQuery("GenerateOracleId"); 
      return query.List()[0]; 
     } 

     return null; 
    } 
} 

И в моем файле hbm.xml у меня есть:

<id name="Id" column="ID" type="int"> 
    <generator class="Namespace.IdGenerator, Namespace" /> 
</id> 

Как я уже сказал, все это работало нормально с 3.0, но не 3.1. Возможно, это проблема с установкой ... любые идеи?

ответ

0

Вопрос №1 - Это все, что я сделал, и похоже, что я сейчас на версии 3.1.

Вопрос # 2 - Я использую библиотеку классов для размещения всех своих функций с помощью NHibernate, а затем для приложения для проверки, прежде чем я внедряю свои новые методы в систему. Я изменил ссылку на 3.1 в своем консольном приложении и забыл сделать то же самое в своей библиотеке классов. Как только я получил оба в одной версии, сообщение об ошибке «Не удалось интерпретировать стратегию генератора идентификаторов» ушло, и все сработало нормально. В моем настраиваемом генераторе было и ничего плохого.

+0

Вопрос № 1 - В примечаниях к выпуску в нем упоминаются ** ILMerge Antlr и ReLinq **. Мне удалось заставить его работать, используя только DLL, поставляемые с выпуском. Классно, меньше DLL! – Benjamin

Смежные вопросы