Книги онлайн и без регистрации » Разная литература » Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 263 264 265 266 267 268 269 270 271 ... 407
Перейти на страницу:
Фактически инфраструктура EF Core располагает всем необходимым для большинства проектов.

В этой и следующей главах вы ознакомитесь с доступом к данным с применением Entity Framework Core. Вы узнаете о том, как создавать модель предметной области, сопоставлять сущностные классы и свойства с таблицами и столбцами базы данных, реализовывать отслеживание изменений, использовать интерфейс командной строки (command-line interface — CLI) инфраструктуры EF Core для создания шаблонных классов и миграций, а также освоите роль класса DbContext. Вдобавок вы узнаете о связывании сущностей с помощью навигационных свойств, транзакций и проверки параллелизма и многих других функциональных средствах.

К тому моменту, когда вы завершите изучение этих двух глав, у вас будет финальная версия уровня доступа к данным для базы данных AutoLot. Прежде чем заняться непосредственно инфраструктурой EF Core, давайте обсудим инструменты объектно-реляционного отображения в целом.

На заметку! Двух глав далеко не достаточно, чтобы охватить все аспекты инфраструктуры Entity Framework Core, т.к. ей посвящены целые книги (по объему сравнимые с настоящей). Цель предлагаемых глав — предложить вам практические знания, которые позволят приступить к применению EF Core для разработки своей линейки бизнес-приложений.

Инструменты объектно-реляционного отображения

Инфраструктура ADO.NET снабжает вас структурой, которая позволяет выбирать, вставлять, обновлять и удалять данные с помощью объектов подключений, команд и чтения данных. Тем не менее, такие аспекты ADO.NET вынуждают обходиться с извлеченными данными в манере, тесно связанной с физической схемой базы данных. В качестве примера вспомните, что при получении записей из базы данных вы открываете объект подключения, создаете и выполняете объект команды и затем используете объект чтения данных для прохода по записям с применением имен столбцов, зависящих от базы данных.

При работе с ADO.NET вы всегда обязаны помнить о физической структуре серверной базы данных. Вы должны знать схему каждой таблицы данных, создавать потенциально сложные запросы SQL для взаимодействия с таблицей (таблицами) данных, отслеживать изменения в извлеченных (или добавленных) данных и т.д. В итоге вы можете быть вынуждены записывать довольно многословный код С#, поскольку сам язык C# не позволяет работать непосредственно со схемой базы данных.

Хуже того, обычный способ создания физической базы данных прямо сосредоточен на конструкциях базы данных, таких как внешние ключи, представления, хранимые процедуры и нормализация данных, а не на объектно-ориентированном программировании.

Еще одним вопросом у разработчиков приложений, требующим решения, является отслеживание изменений. Получение данных из базы — один из этапов процесса, но любые изменения, добавления и/или удаления должны отслеживаться разработчиком, чтобы их можно было сохранить в хранилище данных.

Доступность инфраструктур объектно-реляционного отображения (object-relation-al mapping — ORM) в .NET значительно улучшила ситуацию с доступом к данным, управляя вместо разработчика большинством задач создания, чтения, обновления и удаления (create, read, update, delete — CRUD). Разработчик создает отображение между объектами .NET и реляционной базой данных, а инфраструктура ORM управляет подключениями, генерацией запросов, отслеживанием изменений и хранением данных. В итоге разработчик получает возможность целиком сосредоточиться на бизнес-потребностях приложения.

На заметку! Важно помнить, что инфраструктуры ORM не являются инструментами, которые с легкостью решат все проблемы.С каждым решением связаны компромиссы. Инфраструктуры ORM сокращают объем работы разработчикам, создающим уровни доступа к данным, но могут также привносить проблемы с производительностью и масштабированием в случае ненадлежащего применения. Используйте инфраструктуры ORM для операций CRUD и задействуйте мощь своей базы данных для операций, основанных на множествах.

Хотя разные инфраструктуры ORM имеют небольшие отличия в том, как они работают, или каким образом применяются, все они по существу представляют собой одни и те же фрагменты и части, преследующие ту же самую цель — облегчить выполнение операций доступ к данным. Сущности являются классами, которые отображаются на таблицы базы данных. Специализированный тип коллекции содержит одну или большее количество сущностей. Механизм отслеживания изменений следит за состоянием объектов и любыми связанными с ними изменениями, добавлениями и/или удалениями, а центральная конструкция управляет операциями как руководитель.

Роль Entity Framework Core

"За кулисами" EF Core использует инфраструктуру ADO.NET, которая уже была исследована в предыдущей главе. Подобно любому взаимодействию ADO.NET с хранилищем данных EF Core применяет для этого поставщик данных ADO.NET. Прежде чем поставщик данных ADO.NET можно будет использовать в EF Core, его потребуется обновить для полной интеграции с EF Core. Из-за такой добавленной функциональности доступных поставщиков данных EF Core может оказаться меньше, чем поставщиков данных ADO.NET.

Преимущество инфраструктуры EF Core, применяющей шаблон поставщиков баз данных ADO.NET, заключается в том, что она позволяет объединять в одном проекте парадигмы доступа к данным EF Core и ADO.NET, расширяя ваши возможности. Например, в случае использования EF Core с целью предоставления подключения, схемы и имени таблицы для операций массового копирования задействуются возможности сопоставления EF Core и функциональность программы массового копирования, встроенная в ADO.NET. Такой смешанный подход делает EF Core просто еще одним инструментом в вашем арсенале.

Когда вы оцените объем связующего кода для базового доступа к данным, поддерживаемый инфраструктурой EF Core в согласованной и эффективной манере, по всей видимости, она станет вашим основным механизмом при доступе к данным.

На заметку! Многие сторонние СУБД (скажем, Oracle и MySQL) предлагают поставщики данных, осведомленные об инфраструктуре EF Core. Если вы имеете дело не с SQL Server, тогда обратитесь за детальными сведениями к разработчику СУБД или ознакомьтесь с перечнем доступных поставщиков данных EF Core по ссылке https://docs.microsoft.com/ru-ru/ef/core/providers/.

Инфраструктура EF Core лучше всего вписывается в процесс разработки в случае применения подходов в стиле "формы поверх данных" (или "API-интерфейс поверх данных"). Оптимальными для EF Core являются операции над небольшим количеством сущностей, использующие шаблон единицы работы с целью обеспечения согласованности. Она не очень хорошо подходит для выполнения крупномасштабных операций над данными вроде тех, что встречаются приложениях хранилищ данных типа "извлечение, трансформация, загрузка" (extract-transform-load — ETL) или в больших системах построения отчетов.

Строительные блоки Entity Framework Core

К главным компонентам EF Core относятся DbContext, ChangeTracker, специализированный тип коллекции DbSet, поставщики баз данных и сущности приложения. Для проработки примеров в текущем разделе создайте новый проект консольного приложения по имени AutoLot.Samples и добавьте к нему пакеты Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Design и Microsoft.EntityFrameworkCore.SqlServer:

dotnet new sln -n Chapter22_AllProjects

dotnet new console -lang c# -n AutoLot.Samples -o .AutoLot.Samples -f net5.0

dotnet sln .Chapter22_AllProjects.sln add .AutoLot.Samples

dotnet add AutoLot.Samples package Microsoft.EntityFrameworkCore

dotnet

1 ... 263 264 265 266 267 268 269 270 271 ... 407
Перейти на страницу:

Комментарии
Минимальная длина комментария - 20 знаков. В коментария нецензурная лексика и оскорбления ЗАПРЕЩЕНЫ! Уважайте себя и других!
Комментариев еще нет. Хотите быть первым?