Настройка Enterprise Library с помощью .NET Core 2.1 - PullRequest
0 голосов
/ 11 октября 2018

Я нахожусь в процессе миграции решения с .NET Framework 4.7.1 на .NET Core 2.1 и у меня возникают проблемы с Enterprise Library 6 (с использованием пакета Nuget EnterpriseLibrary.Data.NetCore)

Япопытка создать базу данных из строки подключения и зарегистрировать ее в Autofac.

Исходный код выглядит следующим образом:

builder.Register(c => new DatabaseProviderFactory().Create(DefaultConnection) as SqlDatabase).InstancePerLifetimeScope();

Где DefaultConnection - строковая константа, представляющая web.config Строка соединения.

В web.config Iесть:

<configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" requirePermission="true" />
</configSections>
<dataConfiguration defaultDatabase="DefaultConnection" />
<connectionStrings>
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="*****************" />
</connectionStrings>

Это прекрасно работает.

В моем решении .NET Core 2.1 я использую следующий код

builder.Register(_ => new DatabaseProviderFactory().Create(Constants.DefaultConnection) as SqlDatabase).InstancePerLifetimeScope();

Но при этом выдается следующее исключение:

The connection string for the database 'DefaultConnection' does not exist or does not have a valid provider. 
 - The requested database DefaultConnection is not defined in configuration

У меня есть web.configс теми же настройками в решении, но оно не читается, у меня также есть appsettings.json со строками подключения.

Я пробовал следующий код, используя appsettings.json:

builder.Register(_ => new SqlDatabase(configuration.GetConnectionString("DefaultConnection"))).InstancePerLifetimeScope();

Что, кажется, работает, но когда я звоню Microsoft.Practices.EnterpriseLibrary.Data.DatabaseExtensions.ExecuteSprocAccessor(...)

, я получаю исключение

Parameter discovery is not supported for connections using GenericDatabase.
You must specify the parameters explicitly, or configure the connection to use a type deriving from Database that supports parameter discovery.'

Есть ли у кого-нибудь понимание того, как правильно сделать это?быть?

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