В чем преимущество CodeFirst перед Database First?

Я смотрел некоторые видео и учебные пособия для EF 4.1, и я не понимаю каких-либо преимуществ CodeFirst (за исключением некоторых, если БД очень мала, 3-4 таблицы и мне лень сначала создавать БД).

В основном, лучший подход на данный момент - это создать базу данных в каком-то виде редактора базы данных, который, несомненно, быстрее, чем редактирование в модели сущностей, а EF выбирает все отношения и правильно создает ассоциации. Я знаю, что есть проблемы в соглашениях об именах и т. Д., Но мне очень сложно управлять Code First, так как все выглядит как код и слишком много, чтобы его кодировать.

Что CodeFirst может делать, а Db первым не может?

4 ответа

Решение

CodeFirst не может сделать ничего, что БД в первую очередь не может. В конце дня они оба используют Entity Framework.

Основными преимуществами использования codefirst являются:

  • Скорость разработки - вам не нужно беспокоиться о создании БД, вы только начинаете кодировать. Хорошо для разработчиков с опытом программирования, не имеющих большого опыта работы с БД. Он также имеет автоматическое обновление базы данных, поэтому при изменении модели БД также автоматически обновляется.
  • POCOs - код намного чище, вы не получите множество автоматически сгенерированного кода. У вас есть полный контроль над каждым из ваших классов.
  • Просто - у вас нет модели edmx для обновления или поддержки

Для получения дополнительной информации см. Code- First против Model/Database-first и здесь Code-First или Database-First, как выбрать?

Исходя из подхода DataCentric, мне всегда будет странно, что людям нравится создавать в подходе Code First. Когда я проектирую свою базу данных, я уже думаю о том, что каждая из таблиц так или иначе является классом. Как они связаны друг с другом и как данные будут передаваться. Я могу изображение всей системы через базу данных.

Меня всегда учили, что ты работаешь с нуля, правильно разбираешься в фундаментах, и все остальное последует. Я создаю много разных систем для множества разных компаний, и скорость, с которой я это делаю, основана на том факте, что, получив сильную модель базы данных, я запускаю собственный генератор кода, который создает представления / хранимые процедуры как хорошо, как мой Controller/BusinessLayer/DataLayer для меня, соберите все это вместе, и все, что мне нужно сделать, это создать интерфейс.

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

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

Миграция была включена в EntityFramework 4.3 для CodeFirst, так что вы можете легко и без проблем обновлять изменения из модели в базу данных. Ссылка 1

подробное видео: полное справочное видео

Ну, это зависит от вашего проекта. Я попытаюсь сделать синтазу некоторыми идеями:

  • Вы имеете полный контроль над классами сущностей. Они больше не генерируются, вам не нужно обновлять шаблоны T4 или использовать частичные классы...
  • Модель EDMX исчезнет в EF7 в пользу модели CodeFirst. Так что имейте в виду, если вы планируете перейти на EF или у вас есть проекты, которые начнутся в ближайшем будущем и могут использовать EF7.
  • Проще сделать слияние, если на модели работают несколько разработчиков +/- Аннотации и отображение должны выполняться вручную. Я бы сказал, что первый подход кода кажется более легким (менее раздутым), и мы можем упростить задачу (визуальная модель может скрыть нежелательную сложность). Открыть для свободного API.
  • Вы по-прежнему можете визуализировать модель с помощью Power Tools, но модель доступна только для чтения. Любое изменение в модели должно быть сделано вручную (даже начальные объекты могут быть созданы с нуля). У вас нет частичных моделей (диаграмм), но наши модели должны быть достаточно маленькими.
  • Похоже, что сначала база данных лучше интегрирована с SP и результатами функций (некоторые улучшения были сделаны в EF6)
Другие вопросы по тегам