Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
"Сначала код" или "сначала база данных"
Прежде чем приступить к построению уровня доступа к данным, давайте обсудим два способа работы с EF Core и базой данных: "сначала код" или "сначала база данных". Оба они совершенно допустимы, а выбор применяемого подхода в значительной степени зависит от самой команды разработчиков.
Подход "сначала код" означает, что вы создаете и конфигурируете свои сущностные классы и производный от
DbContextЕсли у вас уже есть база данных или вы предпочитаете, чтобы проектное решение базы данных управляло разрабатываемым приложением, тогда должен применяться подход "сначала база данных". Вместо создания производного от
DbContextDbContextКакой бы подход вы ни выбрали, "сначала код" или "сначала база данных", имейте в виду, что он является обязательством. Если вы используете подход "сначала код", то все изменения вносятся в классы сущностей и контекста, а база данных обновляется с применением миграций. Если вы используете подход "сначала база данных", то все изменения должны вноситься в базу данных, после чего будет требоваться повторное создание шаблонов классов. Приложив некоторые усилия по планированию, вы можете переключаться с подхода "сначала база данных" на подход "сначала код" (и наоборот), но не должны вручную вносить изменения в код и базу данных одновременно.
Создание проектов AutoLot.Dal и AutoLot.Models
Уровень доступа к данным
AutoLoDbContextChapter23_AllProjectsAutoLot.ModelsMicrosoft.EntityFrameworkCore.AbstractionsSystem.Text.JsonПакет
Microsoft.EntityFrameworkCore.AbstractionsMicrosoft.EntityFrameworkCoreAutoLot.DalAutoLot.ModelsMicrosoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.DesignПакет
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.DesignЧтобы выполнить все указанные ранее шаги в командной строке, введите показанные ниже команды (в каталоге, где хотите создать решение):
dotnet new sln -n Chapter23_AllProjectsdotnet new classlib -lang c# -n AutoLot.Models -o .AutoLot.Models -f net5.0dotnet sln .Chapter23_AllProjects.sln add .AutoLot.Modelsdotnet add AutoLot.Models package Microsoft.EntityFrameworkCore.Abstractionsdotnet add AutoLot.Models package System.Text.Jsondotnet new classlib -lang c# -n AutoLot.Dal -o .AutoLot.Dal -f net5.0dotnet sln .Chapter23_AllProjects.sln add .AutoLot.Daldotnet add AutoLot.Dal reference AutoLot.Modelsdotnet add AutoLot.Dal package Microsoft.EntityFrameworkCoredotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore.Designdotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore.SqlServerdotnet add AutoLot.Dal package Microsoft.EntityFrameworkCore.ToolsНа заметку! В случае работы на машине с операционной системой, отличающейся от Windows, используйте символ разделителя каталогов, который принят в вашей системе.
Поступать так придется в отношении всех команд CLI, приводимых в настоящей главе. После создания проектов обновите каждый файл
*.csprojnull<PropertyGroup> <TargetFramework>net5.0</TargetFramework><b> <Nullable>enable</Nullable></b></PropertyGroup>Создание шаблонов для класса, производного от DbContext, и сущностных классов
Следующий шаг предусматривает формирование шаблонов для базы данных
AutoLotAutoLot.DalНа заметку! В папке Chapter_21 хранилища GitHub для этой книги находятся резервные копии базы данных, ориентированные на Windows и Docker. За инструкциями по восстановлению базы данных обращайтесь в главу 21.