Должны ли мы использовать Entity Framework?

В настоящее время мы имеем следующий стек:

  • VS 2005
  • Веб-формы
  • SQL Server 2005
  • IIS 6

Мы планируем перейти к следующему:

  • VS 2010
  • MVC и веб-формы
  • SQL Server 2008
  • IIS 7

Мой вопрос: когда мы перейдем к MVC с VS 2010, мы должны использовать Entity Framework (или другую ORM), микро ORM (например, Massive ), или просто простой SQL?

Все обучающие материалы, которые я прочитал о VS 2010, предназначены для использования Entity Framework для транзакций данных, но будет ли это в обозримом будущем (5+ лет)?

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

31 голос | спросил guanome 19 +04002011-10-19T18:37:55+04:00312011bEurope/MoscowWed, 19 Oct 2011 18:37:55 +0400 2011, 18:37:55

4 ответа


45

Недавно я переключился с использования встроенных SQL-запросов на использование EF и вот что я нашел:

Доводы

  • Намного быстрее построить DAL (не люблю писать SQL-запросы!)
  • Намного легче поддерживать
  • Вам больше не нужно запоминать мой ввод данных, прежде чем создавать встроенный оператор sql, что означает меньшую вероятность атаки SQL-инъекций (конечно, это все еще возможно в зависимости от ваших запросов, но гораздо менее вероятно)

против

  • Невозможно охватить несколько баз данных ... по крайней мере, нелегко
  • Для всех объектов (таблиц, представлений и т. д.) необходим первичный ключ
  • Если вы хотите обновить один столбец в таблице столбцов со 100 + необходимыми столбцами (а не в моем дизайне таблицы), вам необходимо вывести все 100 столбцов для обновления. Или используйте хранимую процедуру.
  • У меня возникли проблемы с некоторыми значениями по умолчанию, определенными на сервере SQL, которые не попадают в модель сущности после добавления новой записи. Обычно это с вычисленными значениями или значениями, которые добавляются в триггер INSERT
  • Иногда запросы SQL плохо записываются и выполняются медленно. Если у вас медленный запрос, запустите SQL-трассировку, чтобы увидеть, что делает EF. Возможно, вы можете переработать этот запрос как SP или View. Это случается не так часто.
  • У меня было несколько проблем с попыткой создать связь между таблицами, у которых нет внешнего ключа, определенного в SQL Server. Обычно это потому, что я пытаюсь создать связь 1:0-1, где EF хочет использовать 1:0-*

Я не эксперт EF, хотя, наверное, я пропустил некоторые вещи. Это только те элементы, которые, как я знаю, я использовал в прошлом при переходе с встроенного SQL в Entity Framework. Я рад, что сделал переключатель, но были времена, когда я действительно ненавидел EF из-за его причуд.

ответил Rachel 19 +04002011-10-19T19:25:35+04:00312011bEurope/MoscowWed, 19 Oct 2011 19:25:35 +0400 2011, 19:25:35
12

Entity Framework - это инструмент для повышения производительности. Если у вас нет оснований для этого (E.G. вы находитесь на SQL 2000 или не имеете времени наращивать технологию), тогда используйте лучшие инструменты в вашем распоряжении.

При этом я нахожу, что понятие Entities очень хорошо переводится в модель модели MVC. Хотя соотношение 1: 1 с моделями и таблицами является плохой практикой, мышление с точки зрения сущностей имеет тенденцию создавать чистые конструкции, легко читаемый код (особенно с LINQ).

Entity Framework активно поддерживается Microsoft. Никто не имеет волшебный хрустальный шар, чтобы сказать, что «поддержка продлится X лет». Я не вижу оснований полагать, что Сущность умрет в ближайшие 5 лет.

ответил P.Brian.Mackey 19 +04002011-10-19T18:53:16+04:00312011bEurope/MoscowWed, 19 Oct 2011 18:53:16 +0400 2011, 18:53:16
4

Еще одно потенциальное решение - использовать альтернативную библиотеку Entity Framework, которая не входит в комплект поставки V.S. В Интернете есть несколько.

Концепция каркаса Entity /3 слоев существует некоторое время и работает с несколькими настраиваемыми библиотеками, как и многие другие разработчики, до того, как Microsoft выпустила собственную «официальную» структуру.

Pros

Получите преимущества инфраструктуры Entity (D.A.L.), не застряв в постоянных библиотеках Microsoft /изменениях каркаса.

Добавление функций в библиотеку, которые, возможно, недоступны для существующей официальной библиотеки, например, использование нескольких брендов dtabase.

против

Необходимо поддерживать библиотеку или инструменты. Он очень распространен, чтобы иметь инструмент кода генератора Entity для генерации enitites.

ответил umlcat 20 +04002011-10-20T02:43:24+04:00312011bEurope/MoscowThu, 20 Oct 2011 02:43:24 +0400 2011, 02:43:24
3

Вы должны принять архитектурное решение на основе проблемы и существующего решения. Как и в любой технологии, есть преимущества и недостатки.

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

ответил Tom Squires 19 +04002011-10-19T19:26:42+04:00312011bEurope/MoscowWed, 19 Oct 2011 19:26:42 +0400 2011, 19:26:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132