ASP.NET Core 3.1 在 class 库中获取连接字符串

ASP.NET Core 3.1 get connection string in class library

我很困惑。我将解决方案重构为两个项目;一个网络和一个 DAL。我正在尝试遵循 DI 的原则,但我不知道如何连接到 DAL。

这是我目前的情况:

在网络项目中:

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

    services.AddSingleton(connectionString);
    ...
}

Class在web项目中获取值

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

Class 在 DAL 存储库中,我不确定如何获取配置:

public class ContactRepo : IContactRepository
{
    private readonly ConnectionString _connectionString;

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

提前感谢您的帮助。

我在 WWW 项目中有 class ConnectionString。

我的错: 这 post 帮助我走了一段路。

我认为你应该研究 google 上的控制反转 (IOC)。如需更深入的信息,您应该查看 Castle Windsor 和 Ninject 包。

您正在将您的配置映射到位于主 Web 应用程序(您称为 WWW 项目)上的 ConnectionString 对象。正如预期的那样,您具有从 Web 项目到 DAL class 库的依赖性。您不能从 DAL 项目调用主应用程序中的 classes。您可以在 DAL 项目或两个项目都依赖的其他层找到您的 ConnectionString。此外,您可以直接调用 Configuration.GetSection(..)... 当 Configuration 是 IConfiguration.

的注入实例时