В чем преимущество 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)