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

时间:2018-02-25 16:52:08

标签: c# dependency-injection cqrs simple-injector

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

我应该如何在查询处理程序中注入数据库连接?在DI容器中注册IDbConnection是否合适?如果我有多个数据库连接怎么办?我该怎么处理它们?查询处理程序应该是http请求(作用域)还是使用每个请求(瞬态)创建?

1 个答案:

答案 0 :(得分:0)

您可以创建resource "azurerm_virtual_machine" "csrVM" { name = "csr-terraform-poc" location = "${var.location}" resource_group_name = "${azurerm_resource_group.terraformRG.name}" network_interface_ids = ["${azurerm_network_interface.terraformNic1.id}", "${azurerm_network_interface.terraformNic2.id}"] primary_network_interface_id = "${azurerm_network_interface.terraformNic1.id}" vm_size = "Standard_DS1_v2" custom_data = "${file("customdata.txt")}" #custom_data = <<CUSTOMDATA #username testuser privilege 15 password testpass #enable password testpass #CUSTOMDATA ,这将创建新的连接实例。喜欢这个

DBConnectionFactory

将工厂注册到DI容器中,并将其注入查询处理程序。

查询处理程序的示例方案

  • 从工厂创建连接
  • 使用连接执行查询
  • 配置连接

我的建议是使用每个查询/命令的连接。避免每次请求使用它们,当需要更新,插入,交易时,您会发现它可能非常混乱。

对于public class DBConnectionFactory { public IDBConnection Create() { // todo: read conn str from web.confing // create connection } } 尝试通过在事务中包装所有更新,插入和删除来执行单个Command中的所有逻辑。