Вышел NHibernate 3.3.3.GA

в 22:31, , рубрики: .net, nhibernate, orm, метки: ,

Всем привет. Буквально несколько минут назад мы выпустили NHibernate 3.3.3.GA. Забрать можно с sf.net или установить с помощью менеджера пакетов NuGet.

Это минорный релиз, но кроме исправления багов и недочетов мы приготовили немного вкусного. В основном этот релиз был направлен на улучшение Linq провайдера:

  • Была улучшена поддержка WCF DataServices
  • Linq поддерживает отображение большего числа стандартных методов .NET в функции и процедуры нижележащей базы данных. К примеру, методы Sin, Cos и другие тригонометрические функции из класса System.Math.
  • С этого релиза Linq to NHibernate, наконец-то, ограниченно* поддерживает проекции с коллекциями:

var emplyee = (
    from emoloyee in db.Employees
        select new 
        {
            EmployeeId = employee.EmployeeId,
            OrderIDs = employee.Orders.Select(o => o.OrderId)
        }
).ToArray();

* На данный момент в подзапросы нельзя добавлять дополнительные критерии.

ПРЕДОСТЕРЕЖЕНИЕ:

В версиях до 3.3.3.CR1 обработка метода Take() содержала логическую ошибку: было не важно, в каком месте запроса находился вызов данного метода — он всегда обрабатывался так, как будто вызов метода был расположен в конце. В версии 3.3.3 это поведение было исправлено — теперь Take() обрабатывается корректно в соответсвии с его семантикой. Таким образом следующие запросы могут выдавать разные результаты.

session.Query<Foo>.OrderBy(...).Take(5).Where(...);

session.Query<Foo>.Where(...).OrderBy(...).Take(5);

В версии 3.3.3 и выше первый запрос будет генерировать подзапрос, который будет применять ограничение на количество строк перед условием where.

Полный список изменений можно посмотреть тут.

Сообщать о найденых багах вы можете в JIRA. Исходный код доступен на GitHub.

Огромное спасибо всем тем, кто принимал участие в выпуске этого релиза.

Автор: alexanderzaytsev

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js