Dependency injection 连接应该传递什么?

Dependency injection 连接应该传递什么?,dependency-injection,.net-core,Dependency Injection,.net Core,我正在开发一个.NET核心库,它将与数据源接口。似乎最好使用设置库,但我不确定应该使用哪种类型: (连接)字符串-然后我需要弄清楚我连接的是什么 DbContext-似乎特定于实体框架 DbConnection-如果它在其他地方共享,我不能随意打开和关闭 ??-这是最好的选择 最好的选择是什么?我正在使用内置DI。首先,有一点: 配置API提供了一种基于可在运行时从多个源读取的名称-值对列表配置应用程序的方法 每个配置值映射到一个字符串键 内置绑定支持将设置反序列化为自定义POCO对象(一个

我正在开发一个.NET核心库,它将与数据源接口。似乎最好使用设置库,但我不确定应该使用哪种类型:

  • (连接)字符串-然后我需要弄清楚我连接的是什么
  • DbContext-似乎特定于实体框架
  • DbConnection-如果它在其他地方共享,我不能随意打开和关闭
  • ??-这是最好的选择
最好的选择是什么?我正在使用内置DI。

首先,有一点:

配置API提供了一种基于可在运行时从多个源读取的名称-值对列表配置应用程序的方法

每个配置值映射到一个字符串键

内置绑定支持将设置反序列化为自定义POCO对象(一个具有属性的简单.NET类)

选项模式使用自定义选项类来表示一组相关设置。 options类必须是非抽象的,带有公共无参数构造函数

现在让我们回到您的案例:

  • 不管您使用什么类来存储设置,它都是一个包装器,围绕着从一个设置源检索的名值对列表。此外,可以通过按键从设置存储器中简单地读取特定值

  • 选项类是一个容器,用于对相关设置进行分组,其中类属性按名称与键相关。这个类必须是POCO=>具有公共属性、公共无参数构造函数等。像
    DbContext
    DbConnection
    这样的类不是类

  • 任何连接字符串(CS)都可以存储为字符串。您可以使用以下选项检查此项。因此,CS可以表示为设置源中的一个键值对。另一方面,CS也是一组键值对(参数名称=值),可以拆分为单独的部分。例如,simple CS to SQL Server具有下一个模板:

    Server=myServerAddress;Database=myDataBase;User Id=myUsername; Password=myPassword;
    
    可以在类中表示/存储,如下所示:

    public class ConnectionString
    {
        public string Server {get;set;}
        public string Database {get;set;}
        ...
    }
    

我想你没注意到这是一个图书馆。库无法控制消费应用程序的配置。这样的类不像配置API那样仅限于字符串值。