Как я понимаю, есть 3 подхода в ef: Code-First,Model-First,Database-First.В чем преимущество подходов (к примеру code-first), если можно к примеру просто создать бд в asp .net core через обычные миграции(впринципе как и сделали разработчики с базовой структурой auth) ?
Когда вы используете базу, ее схема неизбежно должна быть описана три раза: в самой базе данных (Database), в программной мета-модели (Model) вашей библиотеки для доступа к БД и в виде структуры классов (Code). В зависимости от того, какая из этих частей создается первой - и выделяется три подхода.
Code First - это и есть подход, при котором вы "просто создаете бд через обычные миграции". При этом подходе вы как программист пишете классы сущностей, а EF за вас строит модель и создает базу.
Model First - это устаревший подход, при котором вы как программист составляете edmx-модель в визуальном дизайнере, а EF за вас генерирует вам классы и базу данных. В EF Core он уже не поддерживается, и правильно: визуальный редактор модели тормозил, лагал, глючил, и просто был неудобным. Класс, который пишется за минуту, в визуальном редакторе составляется минут пятнадцать. В 2018м году нет никаких причин использовать подход "сначала модель" в новых проектах.
Database First - это классический подход, при котором сначала мудрый DBA (администратор баз данных) составляет БД, а потом вы как программист используете ее в своей программе, автоматически сгенерировав либо вручную написав модель и классы по ней. Этот подход имеет смысл использовать если у вас уже есть готовая БД, либо если требуются серьезные оптимизации на стороне базы (хранимые процедуры, индексированные виды, триггеры).
При необходимости между подходами не так уж и сложно перейти, поэтому рекомендую начинать с Code First, а на Database First переходить когда Code First уже больше "не лезет".
Также отмечу, что подход Database First одним только EF не ограничивается, и его может оказаться целесообразнее использовать с другими инструментами: Linq2Sql, Linq2Db, Dapper
Code First форсируется корпорацией microsoft как наиболее рекомендуемый и прогрессивный подход. Этот подход очень хорош для быстрого старта/прототипирования приложения, хотя по мере роста вы будете всё больше упираться в его ограничения. Разработка реально много быстрее.
Из минусов:
DbFirst в Core урезан до "контекст в первый раз генерируем из базы, а потом миграциями" (в EF6 был полноценный Db First).
В плюсах подхода:
В минусах:
Ссылки по теме:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Ребят, как мне сделать обновление в базу данных в RedBean? При заходе на статью он видит её id и какие то поля из бд, но при нажатии на кнопку id становится...
Есть сайт на wordpress с установленным плагином idcommerce в котором есть функция вывода верхнего меню