Литмир - Электронная Библиотека
A
A

    new Car() {Color = "Yellow", MakeId = 4, PetName = "MyCar4"}

  };

  ProcessBulkImport.ExecuteBulkImport(cars, "Inventory");

  InventoryDal dal = new InventoryDal();

   List<CarViewModel> list = dal.GetAllInventory();

  Console.WriteLine(" ************** All Cars ************** ");

  Console.WriteLine("CarId\tMake\tColor\tPet Name");

  foreach (var itm in list)

  {

    Console.WriteLine(

      $"{itm.Id}\t{itm.Make}\t{itm.Color}\t{itm.PetName}");

  }

  Console.WriteLine();

}

Хотя добавление четырех новых объектов

Car
не показывает достоинства работы, связанной с применением класса
SqlBulkCopy
, вообразите себе попытку загрузки тысяч записей. Мы проделывали подобное с таблицей
Customers
, и время загрузки составляло считанные секунды, тогда как проход в цикле по всем записям занимал часы! Как и все в .NET Core, класс
SqlBulkCopy
— просто еще один инструмент, который должен находиться в вашем инструментальном наборе и использоваться в ситуациях, когда в этом есть смысл.

Резюме

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

System.Data.Common
) и интерфейсных типов (из пространства имен
System.Data
). Вы видели, что с применением модели фабрики поставщиков данных ADO.NET можно построить кодовую базу, не зависящую от поставщика.

Вы также узнали, что с помощью объектов подключений, объектов транзакций, объектов команд и объектов чтения данных можно выбирать, обновлять, вставлять и удалять записи. Кроме того, было показано, что объекты команд поддерживают внутреннюю коллекцию параметров, которые можно использовать для обеспечения безопасности к типам в запросах SQL; они также удобны при запуске хранимых процедур.

Наконец, вы научились защищать код манипулирования данными с помощью транзакций и ознакомились с применением класса

SqlBulkCopy
для загрузки крупных объемов данных в базы данных SQL Server, используя ADO.NET.

Часть VII

Entity Framework Core

Глава 22

Введение в Entity Framework Core

В предыдущей главе были исследованы основы ADO.NET. Инфраструктура ADO.NET позволяет программистам приложений .NET (относительно прямолинейно) работать с реляционными данными, начиная с выхода первоначальной версии платформы .NET В пакете обновлений .NET 3.5 Service Pack 1 компания Microsoft предложила новый компонент API-интерфейса ADO.NET под названием Entity Framework (EF).

Общая цель EF — предоставить возможность взаимодействия с данными из реляционных баз данных с использованием объектной модели, которая отображается напрямую на бизнес-объекты (или объекты предметной области) в создаваемом приложении. Например, вместо того, чтобы трактовать пакет данных как коллекцию строк и столбцов, вы можете оперировать с коллекцией строго типизированных объектов, называемых сущностями. Такие сущности хранятся в специализированных классах коллекций, поддерживающих LINQ, что позволяет выполнять операции доступа к данным в коде С#. Классы коллекций обеспечивают средства запрашивания хранилища данных с применением той же грамматики LINQ, которая была раскрыта в главе 13.

Подобно .NET Core инфраструктура Entity Framework Core представляет собой полностью переписанную инфраструктуру Entity Framework 6. Она построена на основе .NET Core, давая возможность инфраструктуре EF Core функционировать на множестве платформ. Переписывание EF Core позволило добавить к EF Core новые средства и улучшения в плане производительности, которые не получилось бы разумно реализовать в EF 6.

Воссоздание целой инфраструктуры с нуля требует внимательного анализа того, какие средства будут поддерживаться новой инфраструктурой, а от каких придется отказаться. Одним из средств EF 6, которые отсутствуют в EF Core (и вряд ли когда-либо будут добавлены), является поддержка визуального конструктора сущностей (Entity Designer). В EF Core поддерживается парадигма разработки "сначала код". Если вы уже имели дело с упомянутой парадигмой, тогда можете проигнорировать приведенное предостережение.

На заметку! Инфраструктуру EF Core можно использовать с существующими базами данных, а также с пустыми и/или новыми базами данных. Оба механизма называют парадигмой "сначала код", что вероятно нельзя считать самым удачным наименованием. Шаблоны сущностных классов и классов, производных от

DbContext
, могут быть созданы из существующей базы данных, а базы данных могут создаваться и обновляться из сущностных классов. В главах, посвященных EF Core, вы изучите оба подхода.

С каждым новым выпуском в инфраструктуру EF Core добавлялись дополнительные средства, которые присутствовали в EF 6, плюс совершенно новые средства, не существующие в EF 6. С выходом выпуска 3.1 список важных функций, отсутствующих в EF Core (в сравнении с EF 6), был значительно уменьшен, а с выходом выпуска 5.0 разрыв сократился еще больше. Фактически инфраструктура EF Core располагает всем необходимым для большинства проектов.

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

DbContext
. Вдобавок вы узнаете о связывании сущностей с помощью навигационных свойств, транзакций и проверки параллелизма и многих других функциональных средствах.

К тому моменту, когда вы завершите изучение этих двух глав, у вас будет финальная версия уровня доступа к данным для базы данных

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

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

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

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

406
{"b":"847442","o":1}