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