Вышел NHibernate 3.3.3.GA

    Всем привет. Буквально несколько минут назад мы выпустили 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.

    Огромное спасибо всем тем, кто принимал участие в выпуске этого релиза.
    Поделиться публикацией

    Похожие публикации

    Комментарии 5

      0
      А можете рассказать о преимуществах NHibernate перед LINQ и Entity Framework?
        +3
        Я думаю, что не буду объективным в этом вопросе. К тому же в сети есть много подробных сравнений. Вот достаточно подробное weblogs.asp.net/ricardoperes/archive/2012/06/07/differences-between-nhibernate-and-entity-framework.aspx
          +2
          Если кратко — NHibernate существенно сложнее, поддерживает практически все мэинстримовые БД и гораздо функциональнее.
          По некоторым тестам быстродействие NHibernate существенно выше EF.
          Ну и, конечно, интеграция с окружением .NET у EF гораздо лучше и присутствует удобный дизайнер схем.
            0
            Для меня ключевым фактором стала возможность достаточно просто дописывать поддержку своих типов и методов для Linq провайдера.
            Так у нас например через NH есть полная поддержка MS SQL HierarchyId, чего повторить на EF 4 не удалось (в тот момент EF 5 небыло).
            Ну и поддержка кучи БД играет значительную роль.
            0
            Не подскажете на каком этапе находится подпроект NH.Shards?
            Я читал у Орена про него, но давно не слышно новостей

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое