Конфигурация общей библиотеки классов - PullRequest
0 голосов
/ 02 июля 2019

текущий проект (3-х уровневая архитектура) уровень хранилища, основанный на проекте библиотеки классов, основанный на инфраструктуре объектов, контекстный класс и все сущности в нем - все время используемые проектом mvc и все нормально (все .net framework),

пришло и добавило консольное приложение ядра dotnet, чтобы использовать его в качестве автоматизированного задания, успешно ссылающегося на проект библиотеки классов репозитория - после установки целевого консольного приложения dotnet на .netframework -

все до сих пор идет хорошо, пока этот кусок кода

установить конфигурацию в проекте библиотеки классов app.config, не загрузился, консольное приложение dotnetcore уже имеет свои собственные конфиги в файлах json, и все в порядке класс DBcontext

public class DBContext : IdentityDbContext<User> //ApplicationUser
{
    public DBContext()
        : base("DatabaseConnectionString", throwIfV1Schema: false)
    {
// here just checking and found out all configs are missing
        var cnns = ConfigurationManager.ConnectionStrings[0];
        Configuration.LazyLoadingEnabled = false;
        Database.CommandTimeout = 900;
    }

класс записей приложения консоли ядра dotnet

class Program
{
    private static IConfigurationRoot ConfigurationRoot { get; set; }
    private static IServiceProvider ServiceProvider { get; set; }
    private static readonly string env;

    static Program()
    {
        env = Environment.GetEnvironmentVariable("env");

        var builder = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
           .AddJsonFile($"appsettings.{env}.json", optional: false, reloadOnChange: true)
           .AddEnvironmentVariables();
        ConfigurationRoot = builder.Build();
    }
    static void Main(string[] args)
    {
        var mySettingsConfig = new GeneralConfiguration();
        ConfigurationRoot.GetSection("GeneralConfiguration").Bind(mySettingsConfig);
        //it's here
        string DatabaseConnectionString = ConfigurationRoot.GetConnectionString("DatabaseConnectionString");
        Console.WriteLine($"Welcome to {mySettingsConfig.AppName} , {Environment.NewLine}Please note that You are running an {env} configured Application");
        var serviceCollection = new ServiceCollection()
            .RegisterServices();
        serviceCollection.AddOptions();
        serviceCollection.Configure<GeneralConfiguration>(ConfigurationRoot.GetSection(nameof(GeneralConfiguration)));

        ServiceProvider = serviceCollection.BuildServiceProvider();

        var syncService = ServiceProvider.GetService<ISyncService>();

        syncService.SyncTheStuff();

    }
}

есть две работы и одно возможное решение 1 - просто рефакторинг контекстного класса кажется оптимальным решением, но он будет включать в себя тонну рефакторинга,

2 - или добавить оператор if в конструкторе, чтобы библиотека классов, используемая консольным приложением dotnet, загружала недостающие конфиги из другого места (xml, файл json),

3-лучшее решение получить проект библиотеки классов для загрузки конфигов из консольного приложения ядра dotnet

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