我有一个类似于this app的应用。在查询处理程序内部,我使用Dapper来获取数据。 DI容器是SimpleInjector。
我应该如何在查询处理程序中注入数据库连接?在DI容器中注册IDbConnection是否合适?如果我有多个数据库连接怎么办?我该怎么处理它们?查询处理程序应该是http请求(作用域)还是使用每个请求(瞬态)创建?
答案 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中的所有逻辑。