应该为连接传递什么内容?

时间:2017-01-12 19:33:22

标签: dependency-injection .net-core

我正在开发一个将与数据源接口的.NET Core库。最好使用options pattern来设置库,但我不确定我应该期望什么类型:

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

什么是最佳选择?我正在使用内置DI。

1 个答案:

答案 0 :(得分:0)

首先,稍微theory

  

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

     

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

     

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

     

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

现在让我们回到你的案子:

  • 无关紧要,您使用哪个类进行设置存储,它是一个包含 list 的名称 - 值对的包装器,从其中一个设置源检索。此外,可以通过键简单地从设置存储中读取特定值。

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

  • 任何连接字符串(CS)都可以存储为字符串。您可以使用https://www.connectionstrings.com进行检查。因此,CS可以在设置源中表示为一个键值对。另一方面,CS也是一组键值对(参数名称=值),可以分成不同的部分。例如,简单的CS到SQL Server有下一个模板:

    Server=myServerAddress;Database=myDataBase;User Id=myUsername; Password=myPassword;
    

    可以在类中表示/存储,如下所示:

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