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

dotnet add DataProviderFactory package Microsoft.Extensions.Configuration.Json


Определите символ условной компиляции PC (в случае применения Windows):


  PC


Далее добавьте новый файл по имени DataProviderEnum.cs и модифицируйте его код, как показано ниже:


namespace DataProviderFactory

{

  // OleDb поддерживается только в Windows, но не в .NET Core.

  enum DataProviderEnum

  {

    SqlServer,

 #if PC

    OleDb,

#endif

    Odbc

  }

}


Добавьте в проект новый файл JSON по имени appsettings.json и измените его содержимое следующим образом (обновите строки подключения в соответствии с имеющейся средой):


{

  "ProviderName": "SqlServer",

  //"ProviderName": "OleDb",

  //"ProviderName": "Odbc",

  "SqlServer": {

    // Для localdb используйте @"Data Source=(localdb)\

    // mssqllocaldb;Integrated Security=true;

     Initial Catalog=AutoLot"

     "ConnectionString": "Data Source=.,5433;User Id=sa;Password=P@ssw0rd;Initial

       Catalog=AutoLot"

  },

  "Odbc": {

    // Для localdb используйте @"Driver={ODBC Driver 17 for SQL Server};

    Server=(localdb)\mssqllocaldb;Database=AutoLot;Trusted_Connection=Yes";

      "ConnectionString": "Driver={ODBC Driver 17 for SQL Server};

    Server=localhost,5433;

      Database=AutoLot;UId=sa;Pwd=P@ssw0rd;"

  },

  "OleDb": {

    // Для localdb используйте @"Provider=SQLNCLI11;

    // Data Source=(localdb)\mssqllocaldb;Initial

     Catalog=AutoLot;Integrated Security=SSPI"),

     "ConnectionString": "Provider=SQLNCLI11;Data Source=.,5433;

       User Id=sa;Password=P@ssw0rd;

     Initial Catalog=AutoLot;"

  }

}


Сообщите MSBuild о необходимости копировать файл JSON в выходной каталог при каждой компиляции. Модифицируйте файл проекта, как показано ниже:


 

    Always

 


На заметку! Элемент CopyToOutputDirectory чувствителен к наличию пробельных символов. Убедитесь, что пробелы вокруг слова Always отсутствуют.


Теперь, располагая подходящим файлом appsettings.json, вы можете читать значения provider и connectionstring с использованием конфигурации .NET Core. Начните с обновления операторов using в верхней части файла Program.cs:


using System;

using System.Data.Common;

using System.Data.Odbc;

#if PC

  using System.Data.OleDb;

#endif

using System.IO;

using Microsoft.Data.SqlClient;

using Microsoft.Extensions.Configuration;


Очистите весь код в Program.cs и добавьте взамен следующий код:


using System;

using System.Data.Common;

using System.Data.Odbc;

#if PC

  using System.Data.OleDb;

#endif

using System.IO;

using Microsoft.Data.SqlClient;

using Microsoft.Extensions.Configuration;

using DataProviderFactory;


Console.WriteLine("***** Fun with Data Provider Factories *****\n");

var (provider, connectionString) = GetProviderFromConfiguration;

DbProviderFactory factory = GetDbProviderFactory(provider);

// Теперь получить объект подключения.

using (DbConnection connection = factory.CreateConnection)

{

  if (connection == null)

  {

    Console.WriteLine($"Unable to create the connection object");

                  // He удалось создать объект подключения

    return;

  }


  Console.WriteLine($"Your connection object is a: {connection.GetType.Name}");

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

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

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

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

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

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

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

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

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