Что есть в nhibernate? - PullRequest
       5

Что есть в nhibernate?

11 голосов
/ 13 октября 2010

Мы пытаемся решить, стоит ли использовать Entity Framework 4 в проекте.В связи с этим, я думаю, что хорошее место для начала было бы сравнить его с nhibernate, который является зрелым и проверенным годами использования, чтобы иметь все функции, которые нужны людям для корпоративных приложений, и выяснить, какие функции nHibernate отсутствуют в EF4

Итак, для начала мои ограниченные знания:

  • Кэширование: nhib имеет кэш L2, тогда как EF4 имеет плохое кеширование (?)
  • nHibernate имеет провайдеровдля большинства БД, тогда как EF нужны надстройки для не-SQL-баз данных
  • nHib быстрее / более оптимизирован
  • nHib имеет точки расширения (например, типы пользовательских полей)
  • ...что еще?

Найдено несколько статей:

http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

http://dotnetslackers.com/articles/ado_net/A-Feature-driven-Comparison-of-Entity-Framework-and-NHibernate-Multiple-Databases.aspx

http://dotnetslackers.com/articles/ado_net/A-Feature-driven-Comparison-of-Entity-Framework-and-NHibernate-Multiple-Databases-Part2.aspx

Ответы [ 4 ]

5 голосов
/ 14 октября 2010

Я попробовал Entity Framework, когда он только появился, и обнаружил, что конфигурация слишком сложна, когда выполняется что-то нестандартное (в любом реальном приложении все не так идеально, как в примерах). С помощью nhibernate сложности довольно легко решались в очень читаемых файлах отображения. Файлы отображения структуры сущностей были не так удобочитаемы.

3 голосов
/ 13 октября 2010

NHibernate поддерживает другие базы данных, кроме SQL Server, например если вы используете Oracle. Entity Framework сама по себе предназначена для поддержки нескольких поставщиков, но единственный встроенный поставщик, который вы получаете, предназначен для SQL Server. Oracle еще не выпустила ни одного провайдера, и для других баз данных есть коммерческие или отдельные бесплатные провайдеры. Таким образом, если поддержка нескольких БД входит в сферу действия, то NHibernate в настоящее время опережает EF 4.

2 голосов
/ 13 октября 2010

Хотя у меня нет особого опыта работы с EF, одним из главных достоинств NHibernate являются его возможности расширения. Типы пользователей и Прослушиватели событий являются отличными примерами того, насколько настраиваемыми являются все аспекты взаимодействия с NHibernate.

1 голос
/ 13 октября 2010

Я использую Entity Framework в настольном приложении, и, хотя я вполне удовлетворен этим, есть недостаток в использовании DateTime объектов - вы не можете получить доступ к свойствам, что наиболее важно, DateTime.Date свойство.

Кроме того, вы не можете использовать внешние объекты Entity Framework (то есть: объекты не в контексте Entity Framework, такие как отображение Journal на JournalDto) в ваших запросах LINQ, т.е. при отображении - сначала нужно выполнить запрос с ToList(), а затем выполнить сопоставление.

Что касается ошибок в инструментах EF - я ничего не заметил по этому поводу, но я, вероятно, просто поцарапал поверхность фреймворка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...