C# 如何将数据库连接注入查询处理程序?

C# 如何将数据库连接注入查询处理程序?,c#,dependency-injection,cqrs,simple-injector,C#,Dependency Injection,Cqrs,Simple Injector,我有一个类似于的应用程序。在查询处理程序中,我使用Dapper获取数据。DI容器是SimpleInjector 我应该如何在查询处理程序中插入数据库连接?在DI容器中注册IDbConnection好吗?如果我有几个数据库连接怎么办?我应该如何处理它们?查询处理程序应该是http请求的处理程序(作用域)还是与每个请求一起创建(瞬态)?您可以创建将创建新连接实例的DBConnectionFactory。像这样 public class DBConnectionFactory { public

我有一个类似于的应用程序。在查询处理程序中,我使用Dapper获取数据。DI容器是SimpleInjector


我应该如何在查询处理程序中插入数据库连接?在DI容器中注册IDbConnection好吗?如果我有几个数据库连接怎么办?我应该如何处理它们?查询处理程序应该是http请求的处理程序(作用域)还是与每个请求一起创建(瞬态)?

您可以创建将创建新连接实例的
DBConnectionFactory
。像这样

public class DBConnectionFactory {
    public IDBConnection Create() { 
        // todo: read conn str from web.confing
        // create connection
    }
}
将工厂注册到DI容器中,并将其注入查询处理程序中

查询处理程序的示例场景

  • 从工厂创建连接
  • 使用连接执行查询
  • 处理连接
我的建议是每个查询/命令使用连接。避免在每个请求中使用它们,当需要进行更新、插入、事务时,您会发现它们可能非常混乱


对于
命令处理程序
尝试通过在事务中包装所有更新、插入和删除,在单个命令中执行所有逻辑。

您可以创建将创建新连接实例的
DBConnectionFactory
。像这样

public class DBConnectionFactory {
    public IDBConnection Create() { 
        // todo: read conn str from web.confing
        // create connection
    }
}
将工厂注册到DI容器中,并将其注入查询处理程序中

查询处理程序的示例场景

  • 从工厂创建连接
  • 使用连接执行查询
  • 处理连接
我的建议是每个查询/命令使用连接。避免在每个请求中使用它们,当需要进行更新、插入、事务时,您会发现它们可能非常混乱


对于
命令处理程序
尝试在单个命令中执行所有逻辑,方法是将所有更新、插入和删除包装到事务中。

请编写整个代码请编写整个代码