|
|
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
Прошло уже достаточно много времени с появления Entity Framework. Вопрос к тем, кто в нем успел более-менее хорошо покопаться, применить где-то и знаком с NHibernate. Есть что нового добавить к сравнению этих ORM? Если у меня есть некоторый опыт применения NHibernate в проектах, имеет ли смысл сейчас внимательно посмотреть в сторону EF? Есть какие-то новости? Хочу попробовать EF в небольшом проектике, но не знаю стоит ли тратить время? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2009, 10:16 |
|
||
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
Мы работали и сравнивали, но у Вас слишком общий вопрос. Попробуйте как-то уточнить, что именно хотели бы знать? В целом, могу сказать так: - 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 Если будут какие-то конкретные вопросы спрашивайте, постараюсь ответить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2009, 12:51 |
|
||
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
Написал про скорость и понял что поторопился. Выигрыш на стороне EF в простоых случаях типа получения одного типа сущностей. Однако во всех остальных случаях надо смотреть на тесты - ситуация может быть прямо привоположной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2009, 16:22 |
|
||
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
МихаилР, ОК, спасибо. А как насчет перспектив EF на будующее, что и когда там люди обещают на счет его развития? Вопрос пока стоит так: Что сейчас думают товарищи мега-архитекторы-и-все-такое по поводу сравнения родной майкрософтской ORM и лучшей сторонней :) В коллективном обмене опытом попробовать что-то найти полезное для себя :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2009, 07:30 |
|
||
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
Я в первом ответе приводил ссылку - это блог программ-менеджера EF. В самой первой записи он как раз пишет о планах. Планы интересные... Однако, пока они находятся в роли догоняющих. Причем многие вещи пока отсутсвуют даже в планах. Кстати, вот один из примеров - я вчера поднял еще раз наши сравнения и понял, что я действительно оочень поторопился написать Вам по поводу выигрыша в скорости в EF. Дело в том, что как только речь заходит о выборке по ссылке many-to-one (т.е. выборке по id), то в NH можно сложить все на кэш (кстати, до сих пор не знаю - первого или второго уровня). А в EF все равно пойдет одиночный запрос к БД. Понятно, что в общем случае это не показатель, но если это ссылка на небольшой по объему справочник, то через некоторое время он целиком окажется в памяти, а EF будет продолжать ползать в базу... Так вот, ни о какой поддержке кэщирования во второй версии я ничего не нашел, увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2009, 13:37 |
|
||
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
acc2003Что сейчас думают товарищи мега-архитекторы-и-все-такое по поводу сравнения родной майкрософтской ORM и лучшей сторонней :) Я бы сказал, что преимущества пока на стороне NH. Впрочем, при должной сноровке перейти с NH на EF куда как проще, чем обратно, если в последнем будут серьезные изменения к лучшему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2009, 13:43 |
|
||
|
Nhibernate vs Entity Framework
|
|||
|---|---|---|---|
|
#18+
МихаилРЯ бы сказал, что преимущества пока на стороне NH. Впрочем, при должной сноровке перейти с NH на EF куда как проще, чем обратно, если в последнем будут серьезные изменения к лучшему. ОК, ясно, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2009, 08:34 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=71&tid=1351840]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
20ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 293ms |

| 0 / 0 |
