Готов ли Entity Framework к производству? [закрыто]

10

Я изучаю Entity Framework для нового проекта, который собираюсь реализовать, и в рамках своего исследования я спрашиваю некоторых специалистов отрасли, насколько он стабилен и готов к реализации в «реальном мире».

В бегах есть:

  • EF
  • NHibernate
  • DevExpress XPO

У меня уже есть большой опыт работы с XPO, но я не особенно доволен этим.

Стивен Эверс
источник

Ответы:

8

Да, но с некоторыми оговорками:

  • Он полностью поддерживается Microsoft и имеет растущее сообщество - но будучи новичком, чем его ближайший конкурент, nHibernate, он все еще не настолько зрелый, как сообщество.

  • Наряду с менее зрелым сообществом, будут времена, когда функция доступна с EF4, но едва документирована; или EF4 выдаст исключения, с которыми Google не может вам помочь.

  • Он полнофункциональный, когда используется по назначению Microsoft, но, по моему опыту, может быть довольно сложно перестроиться в существующую систему. В идеале вы будете использовать его в новом сценарии со стопроцентным стеком Microsoft. Он, безусловно, достаточно гибкий, чтобы смешиваться с другими системами, но это существенно увеличивает сложность.

Однако, чтобы повторить основной момент, он является полным и достаточно стабильным для производственного использования.


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

Это может пойти обоими путями - если вы хорошо разбираетесь в реляционной / основанной на множестве парадигме SQL и ООП, то ORM позволит двум смешаться, как масло. Если ваша база данных выглядит так, как будто она хочет быть OO, а ваш OO-код выглядит так, как будто она хочет быть основанной на записях, тогда YMMV.

STW
источник
+1: спасибо за информацию. К счастью, этот проект практически полностью реализован в стеке .NET (все еще обсуждается между MySQL и SQL Server), и я собираюсь сначала смоделировать домен (и, надеюсь, сгенерировать структуру таблицы)
Стивен Эверс
@SnOrfus: FWIW Я недавно начал использовать EF поверх MySQL, и мне это очень нравится.
Эрик Кинг
5

Мы использовали EF в нескольких производственных приложениях. У нас также есть NHibernate в нескольких производственных приложениях. Комментарий STW о том, что EF работает лучше всего «при использовании по назначению Microsoft», безусловно, верен. Также справедливо для NHibernate, что он работает лучше всего, когда используется в соответствии с шаблонами, которые наметила команда NHibernate. У меня нет знаний или опыта работы с XPO.

Я не жалею о введении NHibernate в производство.
Я не жалею о запуске Entity Framework в производство.

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

Джим Рейнери
источник
Работая с обоими это отличный способ , чтобы узнать , как работать с обоими. Это немного похоже на изучение VB.NET и C # - вы задаете вопросы, когда видите различия, и задание этих вопросов значительно улучшает ваше понимание в конце.
STW
3

Мы используем EF4.1 с подходом Code First для нашего веб-проекта, и, как уже говорилось ранее, сохраняя использование, как и планировала Microsoft, это избавит вас от множества проблем.

Однако можно заметить, что система еще не достигла зрелости, и я говорю это потому, что:

  1. Поведение все еще сильно меняется (по сравнению с CTP5 до 4.1)
  2. Генератор LINQ to Entities может обрабатывать только базовые типы (Int, String, lot)
  3. Некоторые вещи не работают полностью интуитивно, когда вы пытаетесь объединить существующие наборы данных
    1. Он не позволяет вам создавать определения таблиц только для определенных наборов данных
    2. Для отображения полей, таких как datetime, требуется поиск в Google.
  4. Посмотреть другие известные проблемы
Алессандро Вермейлен
источник
2

На самом деле я не использовал полный стек, но мы используем его по частям в нашем продукте, и он кажется достаточно зрелым, хотя нам пришлось адаптировать некоторые части для наших нужд.

Матяш
источник
0

Я бы так подумал. Я использую EF4 code-first (CTP) для разработки мультитенантного веб-приложения.

Якуб Конецки
источник
+1 - Да, я провел некоторое обучение в команде, которая интенсивно использовала его в очень крупном корпоративном проекте, и он работал довольно хорошо. Это было с первой версией, а не с последней. Поэтому я уверен, что использовать последнюю версию безопасно на 100%.
Я не знаю, как вы можете быть на 100% уверены в любом программном обеспечении, которое вы на самом деле не запускали в производственной среде.
Джереми
-1

Я думаю / надеюсь, что так ... Я начинаю проект с EF 4 и новым подходом Model-First ...

Для того, что я видел, EF 4 намного надежнее и полнее, чем первая версия ... Я бы сказал, дерзайте, я знаю, что ухожу :)

sebagomez
источник
-1

Да, это так, однако вы должны выделять ресурсы для обновления и повторного тестирования вашего приложения при появлении обновлений (как и в любой другой среде).

Casper
источник