Как использовать. NET Framework dll Buit с Entity Framework 6.0 in. NET Базовое приложение - PullRequest
0 голосов
/ 23 апреля 2020

Мы создали библиотеку фреймворков для журналирования, кэширования, электронной почты, сообщений, изображений, которая использует Entity Framework 6.0. Эта библиотека используется в нескольких приложениях в нашей организации.

Всякий раз, когда приложение использует эту библиотеку, должно следовать определенным рекомендациям для реализации. Исходное приложение должно создавать <appsetting> значения с тем же именем, которые будут использоваться DLL. Dll читает строку подключения на основе имени web.config источника (имя этой строки подключения фиксировано).

В нашем новом приложении мы используем. NET Core; но поскольку наша библиотека Framework считывает значения из файла web.config и. NET в ядре его нет, как использовать это из приложения. NET Core?

1 Ответ

1 голос
/ 23 апреля 2020

Если вы замените использование ConfigurationManager.AppSettings["key"] на IConfiguration.Item["key"], это, по моему мнению, наименее инвазивный путь миграции. Есть еще несколько «причудливых» вариантов в. NET Core, но это должен быть путь наименьшего сопротивления, ИМХО.

Если вам нужна библиотека для работы в обоих. NET Core и. NET Framework-приложений, я бы порекомендовал создать небольшую оболочку вокруг конфигурации, скажем, например,

public interface IAppSettings {
    public string this[string key] { get; }
}

, а затем создать две ее реализации, одну для. NET Core и одну для. NET Framework. Что-то вроде

public class WebConfigAppSettings: IAppSettings {
     public string this[string key] => ConfigurationManager.AppSettings[key];
}

и один для. NET Core, аналогично:

public class NetCoreAppSettings: IAppSettings {

    public NetCoreAppSettings(IConfiguration source) => _source = source;

    public string this[string key] => _source[key];
}

Создайте реализации вне вашей общей библиотеки EF.

Затем сделайте так, чтобы классы вашей библиотеки EF, нуждающиеся в настройке, зависели от интерфейса IAppSettings и использовали IoC / Dependency Injection для внедрения правильной реализации в каждое приложение, использующее библиотеку.

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