В течение последних шести месяцев я использовал NHibernate с Active Record на работе и LightSpeed дома в свободное время.
Преимущества / недостатки
До сих пор я обнаружил, что LightSpeed и NHibernate с Active Record просты в освоении.
Я не нашел недостатков с LightSpeed (пока). Функции, которые мне нравятся больше всего:
- Соглашение по конфигурации. Это экономит много времени и обеспечивает согласованный код.
- Класс модели и генератор конфигурации.
- Поддержка Linq и MySQL 5.
Функции, которые мне больше всего нравятся в Active Record:
- Не требуется настройка XML, наиболее распространенные параметры конфигурации предоставляются автоматически.
- Гибкость NHibernate по-прежнему доступна, когда это необходимо (например, критерии запросов).
Недостатки Active Record для меня:
- Кажется, что примеров кода на Ruby on Rails больше, чем на C #
Производительность
Я (пока) не сравнивал оба продукта рядом и не проводил тесты производительности на обоих одинаково.
Я бы предположил, что NHibernate страдает от более глубокой иерархии классов. Оптимизируя мой код с помощью ANTS Profiler, я обнаружил, что для простого запроса есть вызов за вызовом через классы NHibernate до того, как будет создан фактический запрос SQL.
Разумеется, производимый запрос будет влиять на конечную производительность ORM.
И LightSpeed, и NHibernate предлагают ленивую загрузку, а Active Record облегчает это для NHibernate.
Я думаю, что проще оптимизировать ваши запросы с помощью Lightspeed с Linq, и это станет более понятным для людей, поддерживающих ваш код. Принимая во внимание, что обычно не рекомендуется писать NHibernate HQL.