MS Entity Framework VS NHibernate и его производные элементы (FluentNHibernate, Linq для NHibernate) - PullRequest
13 голосов
/ 04 февраля 2010

Я только что прочитал статью о Entity Framework 4 (на самом деле версия 2).

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

NHibernate и его текущие вклады FluentNHibernate и Linq для NHibernate от Ayende Rahien

У меня такое ощущение, что Microsoft исключительно пытается обрести местность, которую потеряла в пользу NHibernate, когда вышла вторая версия NHibernate. Тем не менее, мои опасения заключаются в следующем (не в определенном порядке):

  • Будет ли EF4 менее XML-многословным?
  • Будет ли EF4 совместим с базовыми хранилищами данных, отличными от SQL Server?
  • Каковы основные преимущества использования EF4 вместо FluentNHibernate или самого NHibernate?

NHibernate - отличный инструмент, я думаю, все согласны. Благодаря его предшественнику Hibernate, мы можем легко найти документацию и учебные пособия, а также примеры приложений для ознакомления с ним. Это не относится к FluentNHibernate. В частности, в отношении проекта, над которым я сейчас работаю, который требует дальнейшего изучения NHibernate и его вариантов (например, FluentNHibernate), чтобы документировать правила использования и лучшие практики технологий NHibernate и FluentNHibernate. Таким образом, будучи наручником VB.NET, будучи разработчиком C-Style, я не могу найти некоторые синтаксические эквиваленты в VB.NET для предоставленных примеров, хотя я до сих пор пробился.

Я верю, что NHibernate - лучший выбор, но, как консультант по программному обеспечению, я не могу (не хочу) пропустить важные технологические изменения, улучшения и эволюцию.

Несмотря на плохие комментарии, которые я читал о EF1, EF4 кажется очень многообещающим. Что вы думаете о направлениях NHibernate и Entity Framework? Что касается меня, я озадачен всеми этими чтениями. Мне нужно, чтобы ты вытащил мою голову из воды.

Спасибо вам всем!

Ответы [ 3 ]

5 голосов
/ 04 февраля 2010

Я почти ничего не знаю об EF, но быстрый просмотр предоставленных ссылок заставляет меня поверить, что EF не имеет эквивалента функциональности Automapping Fluent NHibernate .

Редактировать: Некоторые комментаторы указывали мне на ссылки, указывающие на то, что в EF есть некоторое автоматическое копирование, но не совсем понятно, настолько ли он мощный, как FNH (например, возможность для автоматизации коллекций других объектов).

Лично мне нравится, что я могу проектировать POCO OO-способом и позволять инструменту обрабатывать всю занятую работу по отображению в реляционную базу данных.

Насколько мне известно, FNH по-прежнему обладает самой мощной возможностью автоматического копирования.

Для получения дополнительной информации перейдите на Свободное автоматическое сопоставление NHibernate .

4 голосов
/ 04 февраля 2010

Будет ли EF4 менее XML-многословным?

В общем, я не видел никаких признаков того, что XML будет сильно отличаться. Microsoft предоставляет свободный интерфейс EF в версии 4, но это дополнительная загрузка / отдельная загрузка.

Будет ли EF4 совместим с другим базовым хранилищем данных, кроме SQL Server?

Это совместимо сейчас и будет оставаться совместимым в будущем. LinqToSql - это только SQL Server, но EF никогда не был только SQL Server.

Каковы основные преимущества использования EF4 вместо FluentNHibernate или NHibernate?

Честно говоря, их немного. Есть кое-что отличное, но в целом NHibernate еще на много лет опережает EntityFramework, даже в EFv4.

Как консультанту, вероятно, стоит потратить время на то, чтобы стать экспертом как в NHibernate, так и в Entity Framework. Вы, вероятно, будете продолжать видеть их обоих в реальном мире. Когда речь заходит о доступе к данным, у Microsoft, как правило, мало внимания, поэтому неясно, где Entity Framework будет через пару лет. Поскольку это от Microsoft, вы можете быть уверены, что многие разработчики будут использовать EF.

3 голосов
/ 04 февраля 2010

Возьми это с зерном соли. Я не являюсь авторитетом в инструментах ORM, но здесь все сказано ...

Одним из самых больших преимуществ, которые я вижу в EF, является графический интерфейс для отображения. IMO, это экономит много времени, но, вероятно, это причина, по которой отображения EF XML настолько многословны. К сожалению, они не созданы для того, чтобы иметь дело с ними вручную. Изменится это или нет, я не знаю. Что я знаю, так это то, что графический интерфейс, который предоставляет EF, в предыдущих выпусках был очень нестабильным. И я до сих пор слышу о людях, жалующихся на то, что он плохо масштабируется, особенно в больших и более сложных схемах, где он просто пропускает вещи, и вы в конечном итоге возитесь с отображениями напрямую. Мое мнение таково, что XML-карты станут менее многословными по мере взросления EF. У вас также есть поддержка быстрого отображения в EF, что также полезно. Наконец, еще одна важная вещь - это возможность изменять шаблоны кода, которые генерирует EF, то есть если вы предпочитаете проектирование на основе базы данных вместо подхода, ориентированного на первый дизайн.

Еще одним преимуществом является то, что он исходит от Microsoft, и у них достаточно теста, чтобы сделать его действительно дурацкой структурой. За последние несколько лет он значительно вырос. Я думаю, что это будет на том же уровне с NHibernate через чуть больше года. На данный момент, я думаю, что NHibernate - лучший выбор. Это более стабильный и зрелый. Относительно прост в настройке и, что самое главное, лучше работает. Я думаю, что если вы будете проектировать с умом, то переход от одного к другому станет просто куском.

EF - это просто абстракция. Я считаю, что для Oracle есть провайдеры, поэтому я не понимаю, почему их нельзя было добавить по мере роста.

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