В чем преимущество CodeFirst перед Database First? - PullRequest
8 голосов
/ 02 июля 2011

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

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

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

Ответы [ 4 ]

18 голосов
/ 02 июля 2011

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

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

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

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

7 голосов
/ 12 июля 2014

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

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

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

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

2 голосов
/ 24 февраля 2012

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

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

1 голос
/ 10 сентября 2015

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

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