【问题标题】:What should be passed for a connection?连接应该传递什么?
【发布时间】:2017-01-13 05:19:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: dependency-injection .net-core


    【解决方案1】:

    一开始有点theory

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

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

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

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

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

    • 没关系,您使用什么类来存储设置,它是名称-值对的 list 的包装器,从设置源之一检索。此外,可以通过键从设置存储中简单地读取特定值。

    • Option 类是用于对相关设置进行分组的容器,其中类属性按名称与 Key 相关。而且这个类必须是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;}
          ...
      }
      

    【讨论】:

    猜你喜欢
    • 2013-07-26
    • 2017-05-27
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2021-04-30
    相关资源
    最近更新 更多