TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1122 1.37K
День девятьсот тринадцатый. #ЗаметкиНаПолях
Объясняем Подходы Code First, Database First и Model First. Окончание
Начало
Продолжение

3. Что такое Model First?
Если вы поговорите с кем-нибудь, кто в последний раз использовал Entity Framework лет пять назад, он скорее всего заговорит о визуальном редакторе, файлах edmx, и о том, как это всё глючило, вылетало и тормозило. И в этом будет большая доля правды.

По сути, это был визуальный редактор для построения схемы базы данных внутри Visual Studio. Проблема заключалась в том, что он очень сильно тормозил, когда вы добавляли туда хотя бы пару десятков таблиц. Этот визуальный редактор был построен на основе файла edmx. По сути, edmx представлял собой огромный XML-файл, описывающий схему базы данных. Как это выглядело, показано на картинке ниже.

Часто бывало, что вместо того, чтобы использовать тормозящий визуальный редактор для внесения изменений, люди редактировали этот XML файл напрямую, чтобы внести изменения, а затем, если могли, открывали конструктор и проверяли, правильно ли всё выглядит, прежде чем сохранять изменения в базе. Если вы случайно открывали визуальный редактор, вы часто могли стать объектом насмешек в офисе, потому что в лучшем случае ваша Visual Studio зависала на несколько минут, а в худшем - висела несколько минут, а затем просто вылетала.

Файл EDMX был не единственным файлом в подходе Model First. На основе EDMX Visual Studio также автоматически генерировала файлы C# для привязки к вашему коду, которые не слишком отличались от файлов кода, которые мы используем при подходе Code First, за исключением того, что они были автоматически сгенерированным хаосом.

Помимо медленного редактора, были и другие проблемы с подходом Model First:
- Он не создавал миграций для баз данных, для этого часто приходилось использовать сторонний инструмент.
- При работе в крупной команде, поскольку вся база данных находилась в одном большом EDMX-файле, конфликты слияния были обычным явлением, и решать их было кошмаром.
- Некоторые из автоматически сгенерированных файлов не создавались автоматически, вам нужно было щёлкнуть правой кнопкой мыши на файле EDMX, а затем выбрать «Создать» и т.д. Если вы забывали это сделать, всё шло наперекосяк.

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

Какой подход использовать?
В наши дни это довольно простое решение:
- Если вы начинаете новый проект с новой базой данных, используйте Code First.
- Если вы начинаете новый проект, но база данных, с которой он должен работать, уже существует, используйте Database First.

Источник: https://dotnetcoretutorials.com/2021/06/26/code-first-vs-database-first-vs-model-first-entityframework-approaches-explained/
More from @netdeveloperdiary
  1. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  2. Oct 15, 2026Post #3374
  3. Oct 14, 2026Post #3373
  4. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  5. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  6. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →