Объясняем Подходы Code First, Database First и Model First. Начало
Существует два лагеря разработчиков: одни считают Entity Framework интуитивно понятным и простым в использовании, другие считают, что работать с ним - ад. Зачастую это зависит от «подхода» к использованию EF: использовать ли сначала код, сначала базу данных или сначала модель.
Model First включён в этот список, хотя его поддержка была прекращена несколько лет назад. Но люди, которые когда-то с ним мучались, до сих пор думают, что EF - это куча мусора, и они никогда больше не будут с ним работать, хотя подход Code First с тех пор очень сильно усовершенствован.
Здесь мы не будем противопоставлять эти подходы друг другу, а просто рассмотрим, что представляет из себя каждый из них, и почему люди воспринимают EF по-разному в зависимости от подхода, который они использовали.
1. Что такое Code First?
Если вы использовали EF Core или более поздние версии, вы скорее всего использовали подход «Сначала Код». Он состоит в том, что вы сначала строите вашу базу данных с помощью классов C#, а затем «мигрируете» эти сущности в базу данных с помощью команды:
Update-Databaseили
dotnet ef database updateПоскольку всё управляется из кода C#, когда вам нужны дополнительные типы SQL, такие как индексы, ограничения или даже просто сложные внешние ключи, вы должны использовать либо атрибуты аннотации данных, либо EF Fluent Configuration.
Главное, что нужно понимать о Code First, это то, что, поскольку вы создаёте базу данных с помощью кода C#, этот подход хорошо работает для разработчиков, но не для администраторов баз данных или архитекторов. Когда всё написано на C#, может быть трудно отобразить схему базы данных. Кроме того, создавать такие вещи, как хранимые процедуры или представления, в Code First, конечно, можно, но это может быть чересчур громоздким.
Преимущества использования подхода Code First:
- Ваш код всегда обращается к схеме базы данных, которую он контролирует, поэтому редко бывает «несоответствие» в типах столбцов, определениях таблиц и т. д.
- У вас есть стандартный способ управления миграциями базы данных (так что не потребуется никаких хитрых инструкций, типа «запустить этот скрипт перед развёртыванием»).
- Практически любой разработчик может создать базу данных, если знает C#, даже не слишком хорошо разбираясь в SQL (хотя… это может негативно повлиять на качество).
- Подход работает для самых разных СУБД, таких как Postgres, MySQL и т. д.
В общем, сегодня вы, вероятно, выберете подход Code First почти для каждого нового проекта .NET. Даже если конечной целью является управление базой данных другим способом после публикации, это такой инструмент быстрого прототипирования, который довольно хорошо масштабируется, поэтому вы захотите его использовать.
Продолжение следует…
Источник: https://dotnetcoretutorials.com/2021/06/26/code-first-vs-database-first-vs-model-first-entityframework-approaches-explained/