ASP. NET Core 3.1 получить строку подключения в библиотеке классов - PullRequest
0 голосов
/ 18 апреля 2020

Я безумно смущен. Я реорганизовал свое решение в два проекта; сеть и DAL. Я пытаюсь следовать принципам DI, но я не знаю, как подключиться к DAL.

Вот что у меня есть:

В веб-проекте:

public void ConfigureServices(IServiceCollection services)
{
    // connection string
    var connectionString = new ConnectionString(Configuration.GetConnectionString("connectionstringfromappsettings"));

    services.AddSingleton(connectionString);
    ...
}

Класс в веб-проекте для получения значения

public sealed class ConnectionString
{
    public ConnectionString(string value) => Value = value;
    public string Value { get; }
}

Класс в репозитории DAL, который я не уверен, как получить конфигурацию:

public class ContactRepo : IContactRepository
{
    private readonly ConnectionString _connectionString;

    public ContactRepo(ConnectionString connectionString)
    {
        _connectionString = connectionString;
    }
    ...
}

Спасибо за помощь заранее.

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

Я думаю, вам следует изучить Inversion Of Control (IO C) в Google. Для более подробной информации вы должны посмотреть пакеты Castle Windsor и Ninject.

0 голосов
/ 18 апреля 2020

Вы сопоставляете свою конфигурацию с объектом ConnectionString, расположенным в вашем основном веб-приложении (которое вы назвали WWW project). У вас есть зависимость от веб-проекта до библиотеки классов DAL, как и ожидалось. Вы не можете вызывать классы в главном приложении из проекта DAL. Вы можете найти свой ConnectionString в проекте DAL или на каком-либо другом уровне, к которому оба проекта имеют зависимость. Кроме того, вы можете напрямую вызвать Configuration.GetSection (..) ... когда Configuration является внедренным экземпляром IConfiguration.

0 голосов
/ 18 апреля 2020

У меня был класс ConnectionString в WWW project.

Моя ошибка: этот пост помог мне хоть немного пройтись по нему.

Здесь

...