Объясняем Подходы Code First, Database First и Model First. Продолжение
Начало
2. Что такое Database First?
Database First - интересный подход, потому что раньше он был гораздо более распространённым. Независимо от того, назывался ли он «Сначала База Данных» или просто представлял из себя наборы данных (если вспомнить времена WinForms). Это просто означает, что ваше приложение обращается к уже существующей базе данных.
Допустим, есть база данных производственной системы, в которой уже есть, скажем, более 50 таблиц, и каждая из этих таблиц имеет свои обычные столбцы, внешние ключи и ограничения. Если мы выберем подход Code First, возникнет пара проблем:
- Нам нужно вручную ввести определение для каждой таблицы, которую мы хотим использовать, и мы должны сделать всё возможное, чтобы определения в точности соответствовали существующей схеме.
- Мы не можем использовать миграции из Code First, потому что база данных уже существует и, вероятно, управляется другим способом. И хотя это не большая проблема, мы теряем основное преимущество использования Code First.
Итак, мы могли бы сначала написать код, но мы в некоторой степени обманываем себя, имитируя, что код появился первым.
Поэтому вместо этого мы можем использовать подход «Сначала база данных». Он делает то же, что мы делали бы вручную в коде, но делает это путём проверки базы данных и создания классов за нас. Если вы раньше использовали какие-нибудь ORM, то довольно часто можно было попросить ORM «автоматически сгенерировать» тип из базы данных, который можно было бы пересоздавать при каждом изменении базы данных.
Всё, что нам нужно сделать, это выполнить следующую команду:
Scaffold-DbContext "<Строка Подключения>"И Entity Framework сделает всё за нас. Мы можем запустить эту команду снова через некоторое время, чтобы при необходимости получить последние изменения из схемы нашей базы данных. Из-за этого не рекомендуется вообще редактировать классы, которые Entity Framework генерирует для нас, поскольку они будут перезаписаны при следующем запуске скаффолдинга.
В официальной документации от Microsoft подход «Сначала база данных» располагается на странице под заголовком «Обратное проектирование», что вполне справедливо.
Несмотря на то, что далее мы рассмотрим подход Model First, следует отметить, что вы можете использовать подход Database First, так же, как если бы вы использовали модель. По сути, Database First, - это такая же автоматическая генерация схемы в Visual Studio, только в виде классов C#, а не файла EDMX.
Окончание следует…
Источник: https://dotnetcoretutorials.com/2021/06/26/code-first-vs-database-first-vs-model-first-entityframework-approaches-explained/