ядро dotNet (консольное приложение) с данными библиотеки предприятия (EnterpriseLibrary.Data.NetCore) и JSON - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь использовать:

EnterpriseLibrary.Data.NetCore

.nuget \ packages \ предпринимаемыеibrary.data.netcore \ 6.0.1313

https://www.nuget.org/packages/EnterpriseLibrary.Data.NetCore/

.NET Core 2.1

У меня есть следующий JSON

{
  "ConnectionStrings": {
    "MyDefaultConnectionName": "Server=.\\MyInstance;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

И этот код работает нормально (в моем приложении Programnet для консоли dotnet) (просто показывает мои настройки приложения).json подбирается, и похоже, что моя структура строки соединения json выглядит правильно.

using Microsoft.Extensions.Configuration;

            IConfiguration config = new ConfigurationBuilder()
                    .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .Build();


            string conString = Microsoft
               .Extensions
               .Configuration
               .ConfigurationExtensions
               .GetConnectionString(config, "MyDefaultConnectionName");

            Console.WriteLine("MyDefaultConnectionName.conString='{0}'", conString);

и я вижу:

MyDefaultConnectionName.conString = 'Server =. \MyInstance; База данных = MyDB; Trusted_Connection = True; MultipleActiveResultSets = true '

Однако моя попытка использовать код не удалась:

using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;
using System.Data.Common;

    public DataSet GetADataSet()
    {
        DataSet returnDs = null;
        string sql = "Select * from dbo.MyTable";

        try
        {

            DatabaseProviderFactory factory = new DatabaseProviderFactory();
            Database db = DatabaseFactory.CreateDatabase("MyDefaultConnectionName");
            DbCommand dbc = db.GetSqlStringCommand(sql);
            returnDs = db.ExecuteDataSet(dbc);
        }
        catch (Exception ex)
        {
            string temp = ex.Message;
            throw ex;
        }

        return returnDs;
    }

Исключение составляет:

Исключительная ситуация при запуске 'Select * from dbo.MyTable' ('MyDefaultConnectionName') ('Фабрика провайдера базы данных не установлена ​​для статической DatabaseFactory. Задайте фабрику провайдера, вызывающую метод DatabaseFactory.SetProviderFactory или указав пользовательские сопоставления, вызвав DatabaseFactory.SetDatabases метод. ')

Я нашел эту ссылку ....

Microsoft.Practices.EnterpriseLibrary.Data.DLL, но не был обработан в коде пользователя *От 1035 *

до «старого» пре-дотнета ядра на основе xml.

Я тоже был на сайте проекта

https://github.com/Chavoshi/EnterpriseLibrary.NetCore

, но не могу найти работающий пример

..... в отношении моей строки кода выше:

DatabaseProviderFactory myFactory = new DatabaseProviderFactory ();

и сообщение об ошибке:

DatabaseFactory.SetProviderFactory

myFactory не имеет метода SetProviderFactory

........

Я пробовал это ... (но я знаю, что это действительноэто не то же самое, что атрибут xml (будущие читатели, не тратьте свое время на приведенный ниже json)

{
  "ConnectionStrings": {
    "MyDefaultConnectionName": "Server=.\\MyInstance;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true",
    "providerName": "System.Data.SqlClient"
  }
}

Какой магический синтаксис используется при использовании

https://github.com/Chavoshi/EnterpriseLibrary.NetCore

с консольным приложением dotnet core?WITH JSON

APPEND:

Основываясь на комментариях, я также гонялся за этим примером:

https://github.com/Chavoshi/EnterpriseLibrary.NetCore/tree/master/Examples

Один пример, основанный на xmlне основанный на json.

1 Ответ

0 голосов
/ 14 ноября 2018

Спасибо всем за объяснения. Как @ panagiotis-kanavos также упоминал в комментариях, добавление поддержки JSON в библиотеку является серьезным изменением и требует больших усилий, и, конечно, я не могу сделать это по отдельности.

Кстати, я собираюсь каким-то образом запустить Enterprise Library Community и оживить его снова - поскольку я был (и я) фанатом этого всегда, потому что лично я думаю, что это действительно удобно, особенно в Обработка исключений и Регистрация блоков - так что абсолютное добавление поддержки JSON станет одним из самых первых изменений в новых основных версиях.

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

В конце я буду признателен, если кто-нибудь поможет мне в сообществе, так как я начал обсуждать с Microsoft эту тему и жду их решения, чтобы позволить мне обновить официальные пакеты новыми версиями на случай, если мы собираемся продолжить обновление библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...