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

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

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен. Жанр: Программирование год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:
void CloseConnection()

{

  if (_sqlConnection?.State != ConnectionState.Closed)

  {

    _sqlConnection?.Close();

  }

}

Для обработки записей классу SqlBulkCopy требуется имя (и схема, если она отличается от dbo). После создания нового экземпляра SqlBulkCopy (с передачей объекта подключения) установите свойство DestinationTableName. Затем создайте новый экземпляр специального класса чтения данных, который хранит список объектов, подлежащих массовому копированию, и вызовите метод WriteToServer(). Ниже приведен код метода ExecuteBulklmport():

public static void ExecuteBulkImport<T>(IEnumerable<T> records,

                                        string tableName)

{

  OpenConnection();

  using SqlConnection conn = _sqlConnection;

  SqlBulkCopy bc = new SqlBulkCopy(conn)

  {

    DestinationTableName = tableName

  };

  var dataReader = new MyDataReader<T>(records.ToList(),_sqlConnection,

                                       "dbo",tableName);

  try

  {

    bc.WriteToServer(dataReader);

  }

  catch (Exception ex)

  {

    // Здесь должно что-то делаться.

  }

  finally

  {

    CloseConnection();

  }

}

Тестирование массового копирования

Возвратите в проект AutoLot.Client и добавьте в Program.cs следующие операторы using:

using AutoLot.Dal.BulkImport;

using SystemCollections.Generic;

Добавьте в файл Program.cs новый метод по имени DoBulkCopy(). Создайте список объектов Car и передайте его вместе с именем таблицы методу ExecuteBulklmport(). Оставшаяся часть кода отображает результаты массового копирования.

void DoBulkCopy()

{

  Console.WriteLine(" ************** Do Bulk Copy ************** ");

  var cars = new List<Car>

  {

    new Car() {Color = "Blue", MakeId = 1, PetName = "MyCar1"},

    new Car() {Color = "Red", MakeId = 2, PetName = "MyCar2"},

    new Car() {Color = "White", MakeId = 3, PetName = "MyCar3"},

    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("CarIdtMaketColortPet 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 разрыв сократился еще больше.

Перейти на страницу:

Эндрю Троелсен читать все книги автора по порядку

Эндрю Троелсен - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*