Подтвердить что ты не робот

MS Entity Framework VS NHibernate и ее производные вкладки (FluentNHibernate, Linq для NHibernate)

Я просто прочитал эту статью об Entity Framework 4 (фактически версии 2).

Сущность 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? Что касается меня, то меня озадачивают все эти чтения. Мне нужно, чтобы ты вернул мою голову из воды.

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Перейдите к Fluent NHibernate Automapping для получения дополнительной информации.

Ответ 3

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

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

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

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

Каковы самые большие преимущества перехода с EF4 вместо FluentNHibernate или NHibernate?

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

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