EF Code First, Model First или Db First? для многих меняющихся средних и больших приложений

Мы собираемся разработать специализированное веб-приложение среднего и большого размера для частной компании с использованием MVC 4 и EF 5.

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

Мой вопрос: какой из подходов для нас лучше?

1) Снижает усилия по обновлению модели данных и хранилища данных из-за множества изменений, которые могут произойти.

2) Требуется меньше времени на создание хранилища данных и помогает быстрее продвигать проект.

Примечание. Это приложение будет работать с большими наборами данных (10 000, 100 000 объектов для некоторых сущностей). Однако у него будет мало (а иногда и совсем нет) одновременных запросов и онлайн-пользователей.

заранее спасибо


comment
Существует множество аргументов в пользу db-first и model-first, начиная от поддержки дизайнера и заканчивая использованием расширенных функций, которые недоступны для code-first (хорошее сравнение здесь: stackoverflow.com/a/5446587/270591), но простота работы с частыми изменениями схемы модели / базы данных не входит в их число. Миграции - это особенность, уникальная для code-first, и, по моему опыту, она работает довольно хорошо.   -  person Slauma    schedule 28.07.2013
comment
@Slauma Спасибо, что сообщили мне свой XP. Я видел ссылку, которой вы поделились, но она не касается моей проблемы №1: какая из них меньше раздражает при большом количестве изменений ...?!? Поскольку у меня больше XP в db-first, иногда мне хотелось плакать о странном поведении, вызванном изменением db в небольшом приложении ... !!!   -  person Amin Saqi    schedule 28.07.2013


Ответы (3)


Я думаю, что термин

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

Это реальность, но не вся причина многократного изменения модели данных!

Кстати, некоторые предложения могут быть полезны
Считайте бизнес-анализ ключевым моментом и продолжайте бизнес-анализ.
Все больше и больше инвестиций в анализ приведет к снижению затрат на разработку и изменения менеджмент
Назначьте конкретного талантливого аналитика в качестве представителя в офисе клиента.
Назначьте конкретного представителя клиента, отвечающего за анализ и команду разработки. Задокументируйте бизнес-процессы клиентов, поговорите о них с заказчиком. Документируйте результаты переговоров.
Дизайн и управление изменениями
Никогда не проектируйте базу данных в одиночку. Член группы мозгового штурма, пригласите представителя клиента, пригласите бизнес-аналитика, получите администратора баз данных в команде разработчиков, получите роль менеджера по изменениям.
Технология
Посмотрите на технологические тенденции (можно использовать база данных на основе документов будет полезна)
Иметь гибкую структуру и архитектуру для производства программного обеспечения для бизнеса, а не наоборот! Придут изменения ... будьте готовы
Изменения придут, все вышеперечисленные усилия направлены на то, чтобы оптимизировать решение, чтобы снизить затраты при внесении изменений, они не помешают изменениям.
Вам нужно иметь приемлемый механизм выставления счетов клиенту
ITIL Управление уровнем обслуживания, SLA и OLA будет ориентиром.

Итак, ответ на вопрос: 1) Все вышеперечисленное поможет в решении проблемы. Сначала продолжаем интерактивный анализ, затем проектируем и разрабатываем итерациями, используя шаблонный подход. Будут внесены изменения, и они будут стоить.
2) Зависит от технологии и фреймворков, будут инструменты (я не знаю EF), просто не надо » Я настаиваю на конкретной платформе или библиотеке.

Надеюсь это поможет.

person Mohsen Heydari    schedule 28.07.2013
comment
Спасибо, очень полезно. Фактически мы выступаем в качестве подержанного подрядчика. Первый подрядчик предоставляет нам базу данных - или модель данных, если мы хотим. На самом деле у нас нет никаких контактов с заказчиком, мы просто разрабатываем ... Итак, мне нужно выбрать правильный подход для платформы, которую мы используем, то есть Entity Framework. - person Amin Saqi; 28.07.2013
comment
Итак, ваш заказчик - подрядчик из первых рук, образец может быть применен ... Ура, приятель. - person Mohsen Heydari; 28.07.2013

Я могу порекомендовать вам использовать структуру CodeFirst. Потому что ваши классы будут понятными, и в основном вы работаете с классами в бизнес-логике.

person Jeyhun Rahimov    schedule 27.07.2013
comment
не нужна миграция. вы можете добавить столбец в любую таблицу в базе данных с помощью sql-скрипта, а также добавить свойство в модель и удалить таблицу метаданных. (без сомнения, сначала сделайте резервную копию базы данных). Как правило, в каждой структуре у вас будет некоторая работа для миграции. - person Jeyhun Rahimov; 27.07.2013
comment
Или вы можете создать 3-й проект миграции для передачи данных из предыдущей версии в последнюю версию, которая работает с 2 базами данных. Я также хочу сказать, что я всегда вижу, что сайт со структурой codefirst быстрее, чем база данных, на мой взгляд. - person Jeyhun Rahimov; 27.07.2013
comment
Сначала код выполняется быстрее, и теперь он очень хорошо поддерживает миграцию базы данных. - person Elvin Mammadov; 28.07.2013

пожалуйста, посмотрите это, это и this.

person Elvin Mammadov    schedule 27.07.2013
comment
Они не покрывают мою проблему №1: что меньше раздражает при большом количестве изменений ...?!? - person Amin Saqi; 27.07.2013