2013-05-22 2 views
6

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

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

В состав команды входят 3 разработчика и один разработчик баз данных. Наши проекты состоят не менее чем из 130 таблиц.

Наш новый проект имеет потенциал для роста, поэтому мы ожидаем 100 таблиц.

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

  1. Обычно мы разделяем большой проект на многие «модульные» проекты, позволяющие нам работать быстрее и лучше под контролем источника. Будем ли мы использовать один большой «edmx» для всей БД?
  2. Поскольку у нас есть конструктор баз данных, я подозреваю, что CodeFirst не является вариантом. Так стоит ли использовать EF с использованием подхода Database First?
  3. Если мы используем первый подход к базе данных, EF достаточно умный, чтобы правильно определить все отношения и быть готовым к использованию без дополнительной настройки мной? (К дополнительным конфигурациям я имею в виду, что мне придется писать DataAnnotations или придется использовать DbContext)
  4. Лично я считаю, что я очень уверен в разработке базы данных с sql. Единственное раздражение, которое у меня есть, - это когда я должен обновлять все сценарии выбора, удаления, обновления, вставки, когда сущность изменена в моих классах-списках. EF будет заботиться это для меня, но кроме этого я начинаю верить, что это приведет к замедлению работы и в конечном итоге замедлить мое производство, так как мы не знакомы с ним ..

Что вы думаете IS ЭТО ТОГО СТОИТ ?

* За исключением DataAnnotations и Obveride DbContext, кто-нибудь использует простые шаблоны T4 для создания таблиц (схемы)?

+1

Вы задаете много вопросов относительно Entity Framework - слишком много для типа формата вопрос-ответ, описанного в FAQ: http://stackoverflow.com/faq Пожалуйста, ограничьте область действия вопроса и при необходимости создайте несколько вопросов. Entity Framework - отличная технология, и, на мой взгляд, усилия по изучению основы - это преимущество независимо от решения вашей команды. – IAbstract

+1

Спасибо за ваше время Abstract, Я пытался представить свою текущую ситуацию (дилемму) как можно быстрее и быстрее. Я не ожидаю углубленного анализа по каждому из моих вопросов. –

+2

Какую версию Visual Studio вы используете? VS2012 позволяет использовать несколько диаграмм для одного и того же .edmx. –

ответ

1

Я решил не использовать EF. Я не собираюсь рисковать использовать его в большом проекте.

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

Спасибо всем за ваши комментарии ..

* Перед тем как я перейти к прямому АДО снова я дам выстрел FluentData и Dapper .. Открою новый вопрос, так что если вы, ребята, хочу прокомментировать эти два легких ОРМ, я отправлю ссылку позже.

+0

Я бы настоятельно предложил вам по-прежнему взглянуть на EF 5 с использованием Fluent API. Вы все равно можете пойти «DB First», но с большим количеством разделения между кодом и БД - нет модели/Диаграмма необходима. Несколько ссылок, чтобы увидеть, как решать общие задачи с использованием Fluent API. [Здесь] (http://msdn.microsoft.com/en-us/data/jj591617.aspx) и [здесь] (http://msdn.microsoft.com/en-us/data/jj591620) – profMamba

+0

В моей компании мы широко используем проекты SQL Server Data Tools для управления различными базами данных. На стороне приложения мы сначала имеем EF DB. Ite хорошо, и миграции не страшны ни через SSDT. –

+0

Вы когда-нибудь пробовали NHibernate? Я думаю о Entity Framework, как вы. Инфраструктура Entity Framework очень сложна и не является гибкой. Но NHibernate использует XML. – bayramucuncu

-1

Если ваша структура базы данных зрелая, EF должно быть хорошим решением для вас.

Если структура базы данных разрабатывается или будет меняться со временем, я бы сказал, что EF может быть не лучшим для вас.

EF необходимо обновить, если произошли структурные изменения (и, возможно, изменения интерфейса на уровне базы данных). Вы должны подумать о том, как вы будете управлять изменениями базы данных в уже разработанной базе кода.

+3

-1 Итак, если вы не используете EF и вы изменили структуру БД, вам ничего не нужно будет менять? –

+0

Я отвечал на вопрос и пытался быть полезным. У вас, кажется, есть ответ, возможно, вы должны представить его. – pearcewg

+0

У меня нет полного ответа, но я на 100% уверен в том, что вы упомянули, это было не полезно. –

4
  1. Я абсолютно рекомендую создавать несколько моделей. Вы можете выбрать, какие таблицы, представления и хранимые процедуры должны отображаться для каждого из них.
  2. База данных сначала абсолютно прекрасна.
  3. Если ограничения базы данных установлены, EF распознает их. Вы не столкнетесь с незначительными изменениями, но все EF выполняет довольно хорошую работу.
  4. Использование EF будет иметь небольшое влияние на производительность запросов. Но в большинстве случаев это не проблема. В тех немногих случаях, когда у вас может быть неприемлемая производительность, вы можете оптимизировать, введя свой собственный SQL в EF, если это необходимо.

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

+0

# 2 верно, но с некоторыми предостережениями для настройки моделей или POCOs. – IAbstract

+2

@IAbstract да, но это может быть не так уж и важно, учитывая, что альтернатива, похоже, работает с ADO.NET и прокси-серверами для ленивой загрузки в случае OP. –

+0

Я хотел бы добавить, что вы можете получить как внутрикодовые сопоставления (сначала кодовое - глупое имя для сопоставлений кодов, ИМО), так и подход, основанный на базе данных. Просто используйте VS-add «EF Power Tools» и используйте параметр «Обратный инженер-код-первый», чтобы создавать сопоставления кода из существующей базы данных. –

Смежные вопросы