Я нахожусь в процессе миграции решения с .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.'
Есть ли у кого-нибудь понимание того, как правильно сделать это?быть?