Язык программирования C#9 и платформа .NET5
Команда update
Команда
принимает параметр с именем миграции и обычные параметры. Она имеет один дополнительный параметрupdate, позволяющий использовать строку подключения, которая не была сконфигурирована заранее.--connection <подключение>Если команда запускается без имени миграции, тогда она обновляет базу данных до самой последней миграции, при необходимости создавая саму базу. Если указано имя миграции, то база данных обновляется до этой миграции. Все предшествующие миграции, которые пока не применялись, также будут применены. Имена примененных миграций сохраняются в таблице
.__EFMigrationsHistoryЕсли имя миграции имеет отметку времени, которая соответствует более раннему моменту, чем другие примененные миграции, тогда выполняется откат всех более поздних миграций. Когда в качестве имени миграции указывается
, происходит откат всех миграций и база данных становится пустой (не считая таблицы0).__EFMigrationsHistoryКоманды для управления типами DbContext
Доступны четыре команды для управления типами
. Три из них (DbContext,list,info) работают с классами, производными отscript, в вашем проекте. КомандаDbContextсоздает производный отscaffoldкласс и сущности из существующей базы данных. Все четыре команды описаны в табл. 22.16.DbContextДля команд
иlistдоступны обычные параметры. Командаinfoвыдает список классов, производных отlist, в целевом проекте. КомандаDbContextпредоставляет детали об указанном производном отinfoклассе, в том числе строку подключения, имя поставщика и источник данных. КомандаDbContextгенерирует сценарий SQL, который создает вашу базу данных на основе объектной модели, игнорируя любые имеющиеся миграции. Командаscriptиспользуется для анализа существующей базы данных и рассматривается в следующем разделе.scaffoldКоманда scaffold
Команда
создает из существующей базы данных классы C# (производные отscaffoldи сущностные классы ), дополненные аннотациями данных (если требуется) и командами Fluent API. В табл. 22.17 описаны два обязательных параметра: строка подключения к базе данных и полностью заданный поставщик (например,DbContext).Microsoft.EntityFrameworkCore.SqlServerКроме того, есть параметры, которые позволяют выбирать специфические схемы и таблицы, имя и пространство имен создаваемого класса, выходной каталог и пространство имен для генерируемых сущностных классов, а также многое другое. Предусмотрены и стандартные параметры. В табл. 22.18 перечислены расширенные параметры, которые далее обсуждаются более подробно.
В версии EF Core 5.0 команда
стала работать гораздо надежнее. Как видите, на выбор предлагается довольно много вариантов. Если выбран вариант с аннотациями данных (scaffold), тогда EF Core будет применять аннотации данных там, где это возможно, и заполнять отличия с использованием Fluent API. Если вариант с-dне выбран, то вся конфигурация (отличающаяся от соглашений) кодируется с помощью Fluent API. Вы можете указывать пространство имен, схему и местоположение для генерируемых файлов с сущностными классами и классом, производным от-d. Если вы не хотите создавать шаблон для целой базы данных, тогда можете выбрать определенные схемы и таблицы. ПараметрDbContextпозволяет исключить метод--no-onconfiguringиз шаблонного класса, а параметрOnConfiguring()отключает средство перевода имен в множественное число. Упомянутое средство превращает имена сущностей в единственном числе (--no-pluralize) в имена таблиц во множественном числе (Car) при создании миграций и имена таблиц во множественном числе в имена сущностей в единственном числе при создании шаблона.CarsРезюме
В настоящей главе вы начали ознакомление с инфраструктурой Entity Framework Core. В ней были исследованы аспекты, лежащие в основе EF Core, выполнения запросов и отслеживания изменений. Вы узнали о придании формы своей модели, соглашениях EF Core, аннотациях данных и Fluent API, а также о том, как их применение влияет на проектное решение для базы данных. Наконец, вы научились пользоваться мощным интерфейсом командной строки EF Core и глобальными инструментами.
Наряду с тем, что в этой главе было предложено много теоретических сведений и мало кода, следующая глава содержит главным образом код и совсем немного теории. По завершении проработки материалов главы 23 в вашем распоряжении появится законченный уровень доступа к данным
.AutoLotГлава 23
Построение уровня доступа к данным с помощью Entity Framework Core
В предыдущей главе раскрывались детали и возможности инфраструктуры EFCore. Текущая глава сосредоточена на применении того, что вы узнали об инфраструктуре EF Core, для построения уровня доступа к данным
. В начале главы строятся шаблоны сущностей и производного отAutoLotкласса для базы данных из предыдущей главы. Затем используемый в проекте подход "сначала база данных" меняется на подход "сначала код", а сущности обновляются до своей финальной версии и применяются к базе данных с использованием миграций EF Core. Последним изменением, внесенным в базу данных, будет воссоздание хранимой процедурыDbContextи создание нового представления базы данных (в комплекте с соответствующей моделью представления), что делается с помощью миграций.GetPetNameСледующий шаг — формирование хранилищ, обеспечивающих изолированный доступ для создания, чтения, обновления и удаления (create, read, update, delete — CRUD) базы данных. Далее в целях тестирования к проекту будет добавлен код инициализации данных вместе с выборочными данными. Остаток главы посвящен испытаниям уровня доступа к данным
посредством автоматизированных интеграционных тестов.AutoLot



