powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Nhibernate vs Entity Framework
7 сообщений из 7, страница 1 из 1
Nhibernate vs Entity Framework
    #35955249
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошло уже достаточно много времени с появления Entity Framework.

Вопрос к тем, кто в нем успел более-менее хорошо покопаться, применить где-то и знаком с NHibernate.

Есть что нового добавить к сравнению этих ORM?

Если у меня есть некоторый опыт применения NHibernate в проектах, имеет ли смысл сейчас внимательно посмотреть в сторону EF? Есть какие-то новости? Хочу попробовать EF в небольшом проектике, но не знаю стоит ли тратить время?
...
Рейтинг: 0 / 0
Nhibernate vs Entity Framework
    #35955801
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы работали и сравнивали, но у Вас слишком общий вопрос.

Попробуйте как-то уточнить, что именно хотели бы знать?

В целом, могу сказать так:
- NHibernate много богаче по возможностям маппинга. Это касается как маппинга сущностей, так и маппинга, чем EF. В частности, в EF сейчас не поддерживаются перечислимые типы, нет custom types, есть только двусторонние ссылки (для нас это означает необходимость менять структуру данных)
- В NH больше возможностей управлять загрузкой из базы. Например, в стандартной поставке EF нет implicite lazy loading (т.е. автоматически, без необходимости вызывать некий метод Load) - хотя есть отдельное решение, которое это делает, нет batch loading. Правда, на сколько это актуально...
- В NH более простая для ручного заполнения структура файла маппинга. EF ориентируется в первую очередь на использование дизайнера.
- В EF нет такого понятие как "кэш второго уровня", т.е. кэшируются только загруженные сущности. Правда, опять таки не уверен, что это плохо, ибо при неправильном использование кэш второго уровня вещь способная привести к очень неприятным последствиям.
- В NH сейчас очень сырая поддержка LINQ, ее обещают доделать к релизу 2.1, но, судя по коммитам в svn и по записям в блогах (где ребята пишут, чем занимаются сейчас) за доделку еще не брались. В EF LINQ очень на высоте, причем есть конструкции, которых банально нет в NH (там это можно сделать только прямым SQL).
- EF это не POCO, хотя все зависимые свойства скрыты как internal или protected.

В целом по ощущениям - EF ближе к СУБД, чем NH. Т.е. получить на первом такого же уровня абстракцию, как на втором - очень не просто. Другое дело, что это дает ощутимый выигрыш в производительности. В целом, на одинаковых запросах EF отстает от прямого DataSet на 10%-20%, тогда как в NH это можно получить только если кэшировать сессию между запросами (что применимо далеко не во всех сценариях).

У EF достаточно интересный roadmap к второй версии - http://blogs.msdn.com/efdesign/archive/2008/06/23/transparency-in-the-design-process.aspx

Если будут какие-то конкретные вопросы спрашивайте, постараюсь ответить
...
Рейтинг: 0 / 0
Nhibernate vs Entity Framework
    #35956480
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал про скорость и понял что поторопился.
Выигрыш на стороне EF в простоых случаях типа получения одного типа сущностей. Однако во всех остальных случаях надо смотреть на тесты - ситуация может быть прямо привоположной.
...
Рейтинг: 0 / 0
Nhibernate vs Entity Framework
    #35957446
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МихаилР,

ОК, спасибо.
А как насчет перспектив EF на будующее, что и когда там люди обещают на счет его развития?

Вопрос пока стоит так:
Что сейчас думают товарищи мега-архитекторы-и-все-такое по поводу сравнения родной майкрософтской ORM и лучшей сторонней :)

В коллективном обмене опытом попробовать что-то найти полезное для себя :)
...
Рейтинг: 0 / 0
Nhibernate vs Entity Framework
    #35958318
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в первом ответе приводил ссылку - это блог программ-менеджера EF.
В самой первой записи он как раз пишет о планах. Планы интересные...

Однако, пока они находятся в роли догоняющих. Причем многие вещи пока отсутсвуют даже в планах.

Кстати, вот один из примеров - я вчера поднял еще раз наши сравнения и понял, что я действительно оочень поторопился написать Вам по поводу выигрыша в скорости в EF. Дело в том, что как только речь заходит о выборке по ссылке many-to-one (т.е. выборке по id), то в NH можно сложить все на кэш (кстати, до сих пор не знаю - первого или второго уровня). А в EF все равно пойдет одиночный запрос к БД.
Понятно, что в общем случае это не показатель, но если это ссылка на небольшой по объему справочник, то через некоторое время он целиком окажется в памяти, а EF будет продолжать ползать в базу...

Так вот, ни о какой поддержке кэщирования во второй версии я ничего не нашел, увы.
...
Рейтинг: 0 / 0
Nhibernate vs Entity Framework
    #35958332
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
acc2003Что сейчас думают товарищи мега-архитекторы-и-все-такое по поводу сравнения родной майкрософтской ORM и лучшей сторонней :)

Я бы сказал, что преимущества пока на стороне NH.
Впрочем, при должной сноровке перейти с NH на EF куда как проще, чем обратно, если в последнем будут серьезные изменения к лучшему.
...
Рейтинг: 0 / 0
Nhibernate vs Entity Framework
    #35959890
acc2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МихаилРЯ бы сказал, что преимущества пока на стороне NH.
Впрочем, при должной сноровке перейти с NH на EF куда как проще, чем обратно, если в последнем будут серьезные изменения к лучшему.
ОК, ясно, спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Nhibernate vs Entity Framework
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]