Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

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

Часть 390 из 642 Информация о книге

  }

}

Console.ReadLine();

Добавьте приведенный далее код в конец файла

Program.cs
. Эти методы читают конфигурацию, устанавливают корректное значение
DataProviderEnum
, получают строку подключения и возвращают экземпляр
DbProviderFactory
:

static DbProviderFactory GetDbProviderFactory(DataProviderEnum provider)

  => provider switch

{

  DataProviderEnum.SqlServer => SqlClientFactory.Instance,

  DataProviderEnum.Odbc => OdbcFactory.Instance,

#if PC

  DataProviderEnum.OleDb => OleDbFactory.Instance,

#endif

  _ => null

};

static (DataProviderEnum Provider, string ConnectionString)

  GetProviderFromConfiguration()

{

  IConfiguration config = new ConfigurationBuilder()

    .SetBasePath(Directory.GetCurrentDirectory())

    .AddJsonFile("appsettings.json", true, true)

    .Build();

  var providerName = config["ProviderName"];

  if (Enum.TryParse<DataProviderEnum>

    (providerName, out DataProviderEnum provider))

  {

    return (provider,config[$"{providerName}:ConnectionString"]);

  };

  throw new Exception("Invalid data provider value supplied.");

}

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

Inventory
базы данных
AutoLot
:

*****

 Fun with Data Provider Factories

*****

Your connection object is a: SqlConnection

Your command object is a: SqlCommand

Your data reader object is a: SqlDataReader

*****

 Current Inventory

*****

-> Car #1 is a VW.

-> Car #2 is a Ford.

-> Car #3 is a Saab.

-> Car #4 is a Yugo.

-> Car #9 is a Yugo.

-> Car #5 is a BMW.

-> Car #6 is a BMW.

-> Car #7 is a BMW.

-> Car #8 is a Pinto.

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

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

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

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

DbConnection
,
DbCommand
и других типов из пространства имен
System.Data.Common
.

С учетом сказанного вы можете прийти к заключению, что такой обобщенный подход предотвращает прямой доступ к дополнительным возможностям отдельной СУБД. Если вы должны быть в состоянии обращаться к специфическим членам лежащего в основе поставщика (например,

SqlConnection
), то можете воспользоваться явным приведением:

if (connection is SqlConnection sqlConnection)

{

  // Вывести информацию об используемой версии SQL Server.

  WriteLine(sqlConnection.ServerVersion);

}

Однако в таком случае кодовая база становится чуть труднее в сопровождении (и менее гибкой), потому что придется добавить некоторое количество проверок времени выполнения. Тем не менее, если необходимо строить библиотеки доступа к данным наиболее гибким способом из числа возможных, тогда модель фабрики поставщиков данных предлагает замечательный механизм для решения такой задачи.

На заметку! Инфраструктура Entity Framework Core и ее поддержка внедрения зависимостей значительно упрощает построение библиотек доступа к данным, которым необходим доступ к разрозненным источникам данных.

Первый пример завершен, и теперь можно углубляться в детали работы с ADO.NET.

Погружение в детали объектов подключений, команд и чтения данных

Как было показано в предыдущем примере, ADO.NET позволяет взаимодействовать с базой данных с помощью объектов подключения, команд и чтения данных имеющегося поставщика данных. Для более глубокого понимания упомянутых объектов в ADO.NET будет создан расширенный пример.

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

1. Создать, сконфигурировать и открыть объект подключения.

2. Создать и сконфигурировать объект команды, указав объект подключения в аргументе конструктора или через свойство

Connection
.

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 4
    • Спецслужбы 4
  • Деловая литература 204
    • Банковское дело 3
    • Деловая литература 2
    • Корпоративная культура 13
    • Личные финансы 21
    • Малый бизнес 2
    • Маркетинг, PR, реклама 46
    • О бизнесе популярно 112
    • Отраслевые издания 2
    • Управление, подбор персонала 17
    • Ценные бумаги, инвестиции 3
    • Экономика 28
  • Детективы и триллеры 2771
    • Боевики 314
    • Дамский детективный роман 21
    • Детективы 424
    • Иронические детективы 182
    • Исторические детективы 416
    • Классические детективы 223
    • Криминальные детективы 156
    • Крутой детектив 119
    • Маньяки 15
    • Медицинский триллер 2
    • Политические детективы 44
    • Полицейские детективы 235
    • Прочие Детективы 818
    • Техно триллер 3
    • Триллеры 1205
    • Шпионские детективы 101
  • Детские 497
    • Детская образовательная литература 13
    • Детская проза 165
    • Детские остросюжетные 53
    • Детские приключения 263
    • Детские стихи 21
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 77
  • Детские книги 532
    • Детская фантастика 196
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 266
  • Документальная литература 809
    • Биографии и мемуары 531
    • Военная документалистика 7
    • Искусство и Дизайн 14
    • Критика 11
    • Научпоп 9
    • Прочая документальная литература 73
    • Публицистика 257
  • Дом и Семья 216
    • Домашние животные 14
    • Здоровье и красота 34
    • Кулинария 33
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 8
    • Сделай сам 2
    • Спорт 10
    • Хобби и ремесла 7
    • Эротика и секс 111
  • Драматургия 109
    • Драма 106
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 8
    • Разное 8
  • Компьютеры и Интернет 15
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 10
  • Любовные романы 26626
    • Исторические любовные романы 956
    • Короткие любовные романы 2681
    • Любовно-фантастические романы 11053
    • Остросюжетные любовные романы 988
    • Порно 90
    • Прочие любовные романы 57
    • Слеш 417
    • Современные любовные романы 10995
    • Фемслеш 44
    • Эротика 6565
  • Научно-образовательная 375
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 32
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 3
    • Государство и право 1
    • Детская психология 16
    • Зоология 3
    • Иностранные языки 2
    • Культурология 46
    • Литературоведение 20
    • Медицина 35
    • Обществознание 7
    • Педагогика 20
    • Политика 22
    • Прочая научная литература 58
    • Психотерапия и консультирование 51
    • Религиоведение 7
    • Секс и семейная психология 31
    • Технические науки 4
    • Физика 9
    • Философия 34
    • Химия 3
    • Экология 3
    • Юриспруденция 9
    • Языкознание 18
  • Образование 525
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 298
    • Карьера 4
    • Психология 231
  • Поэзия и драматургия 43
    • Басни 2
    • Драматургия 11
    • Лирика 2
    • Поэзия 31
  • Приключения 763
    • Вестерны 14
    • Исторические приключения 421
    • Морские приключения 79
    • Природа и животные 31
    • Прочие приключения 212
    • Путешествия и география 52
  • Проза 2427
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 111
    • Историческая проза 321
    • Классическая проза 135
    • Контркультура 14
    • Магический реализм 95
    • Новелла 14
    • Повесть 24
    • Проза прочее 21
    • Рассказ 73
    • Роман 103
    • Русская классическая проза 73
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 47
    • Современная проза 1865
    • Эпистолярная проза 2
    • Эпопея 5
    • Эссе, очерк, этюд, набросок 3
  • Прочее 1519
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 12
    • Кино 13
    • Музыка 11
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1472
  • Религия и духовность 365
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 4
    • Религия 24
    • Самосовершенствование 139
    • Хиромантия 1
    • Эзотерика 212
    • Язычество 1
  • Справочная литература 42
    • Прочая справочная литература 3
    • Путеводители 10
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 154
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 34
    • Прочая старинная литература 115
  • Техника 2
    • Автомобили и ПДД 1
    • Архитектура 1
  • Фантастика и фентези 28681
    • Альтернативная история 4203
    • Боевая фантастика 5389
    • Героическая фантастика 1492
    • Городское фэнтези 2299
    • Готический роман 13
    • Детективная фантастика 754
    • Ироническая фантастика 102
    • Ироническое фэнтези 83
    • Историческое фэнтези 532
    • Киберпанк 320
    • Космическая фантастика 1821
    • Космоопера 56
    • ЛитРПГ 1333
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 522
    • Научная фантастика 935
    • Попаданцы 9518
    • Постапокалипсис 919
    • Сказочная фантастика 26
    • Социально-философская фантастика 548
    • Стимпанк 151
    • Технофэнтези 143
    • Ужасы 103
    • Ужасы и мистика 826
    • Фантастика 254
    • Фантастика: прочее 232
    • Фэнтези 11576
    • Эпическая фантастика 236
    • Юмористическая фантастика 1075
    • Юмористическое фэнтези 1681
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 195
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 67
    • Сатира 3
    • Юмористическая проза 124
    • Юмористические стихи 5
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен