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

На этом создание базы данных AutoLot завершается. Конечно, она очень далека от базы данных реального приложения, но будет успешно удовлетворять всем нуждам текущей главы, а также добавляться в главах, посвященных Entity Framework Core. Располагая тестовой базой данных, можно приступить к погружению в детали, касающиеся модели фабрики поставщиков данных ADO.NET.

Модель фабрики поставщиков данных ADO.NET

Модель фабрики поставщиков данных .NET Core позволяет строить единую кодовую базу, используя обобщенные типы доступа к данным. Чтобы разобраться в реализации фабрики поставщиков данных, вспомните из табл. 21.1, что все классы внутри поставщика данных являются производными от тех же самых базовых классов, определенных внутри пространства имен System.Data.Common:

DbCommand — абстрактный базовый класс для всех классов команд;

DbConnection — абстрактный базовый класс для всех классов подключений;

DbDataAdapter — абстрактный базовый класс для всех классов адаптеров данных;

DbDataReader — абстрактный базовый класс для всех классов чтения данных;

DbParameter — абстрактный базовый класс для всех классов параметров;

DbTransaction — абстрактный базовый класс для всех классов транзакций.


Каждый поставщик данных, совместимый с .NET Core, содержит класс, производный от System.Data.Common.DbProviderFactory. В этом базовом классе определено несколько методов, которые извлекают объекты данных, специфичные для поставщика. Вот члены класса DbProviderFactory:


public abstract class DbProviderFactory

{

  public virtual bool CanCreateDataAdapter { get;};

  public virtual bool CanCreateCommandBuilder { get;};

  public virtual DbCommand CreateCommand;

  public virtual DbCommandBuilder CreateCommandBuilder;

  public virtual DbConnection CreateConnection;

  public virtual DbConnectionStringBuilder CreateConnectionStringBuilder;

  public virtual DbDataAdapter CreateDataAdapter;

  public virtual DbParameter CreateParameter;

  public virtual DbDataSourceEnumerator CreateDataSourceEnumerator;

}


Чтобы получить производный от DbProviderFactory тип для вашего поставщика данных, каждый поставщик предоставляет статическое свойство, используемое для возвращения корректного типа. Для возвращения версии SQL Server поставщика DbProviderFactory применяйте следующий код:


// Получить фабрику для поставщика данных SQL.

DbProviderFactory sqlFactory =

    Microsoft.Data.SqlClient.SqlClientFactory.Instance;


Чтобы сделать программу более универсальной, вы можете создать фабрику DbProviderFactory, которая возвращает конкретную разновидность DbProviderFactory на основе настройки в файле appsettings.json для приложения. Вскоре вы узнаете, как это делать, а пока после получения фабрики для поставщика данных можно получить связанные с ним объекты данных (например, объекты подключений, команд и чтения данных).

Полный пример фабрики поставщиков данных

В качестве завершенного примера создайте новый проект консольного приложения C# (по имени DataProviderFactory), которое выводит инвентарный список автомобилей из базы данных AutoLot. В начальном примере логика доступа к данным будет жестко закодирована прямо в сборке DataProviderFactory.exe (чтобы излишне не усложнять код). По мере изучения материалов настоящей главы вы узнаете более эффективные способы решения задачи.

Начните с добавления нового элемента ItemGroup и пакетов Microsoft.Extensions.Configuration.Json, System.Data.Common, System.Data.Odbc, System.Data.OleDb и Microsoft.Data.SqlClient в файл проекта:


dotnet add DataProviderFactory package Microsoft.Data.SqlClient

dotnet add DataProviderFactory package System.Data.Common

dotnet add DataProviderFactory package System.Data.Odbc

dotnet add DataProviderFactory package System.Data.OleDb

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

Похожие книги

Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT