【发布时间】:2021-06-22 17:22:03
【问题描述】:
我执行 SQL 插入命令的代码是这样的
foreach (var id in idlist)
{
_connection.Open();
var sql = "sql query"
var parameters = ....
await _connection.ExecuteAsync(sql, parameters);
_connection.Close();
}
一切看起来不错,但是循环只成功运行一次,当它进入第二次时会抛出错误
The ConnectionString property has not been initialized.
谁能指出我在这里做错了什么?
注意:我也尝试过将连接打开和关闭移出循环,但结果仍然相同。
【问题讨论】:
-
是否可以在调用“_connection.Open()”之前打印“connectionstring”属性的值并检查其值是如何以及在何处被清除的?
-
通常,使用 SqlConnection 的方式是创建一个,打开它,使用它,然后关闭或处置它。要么保持打开状态,要么为每个查询创建一个新的(实际上是连接池前面的轻量级外观)
-
允许 Dapper 处理打开和关闭。在这里,您无需在将连接发送到 Dapper 之前打开连接。如果输入连接未处于打开状态,Dapper 将打开它 - Dapper 将执行操作 - Dapper 将关闭连接。那里有一些隐藏代码导致_connection在没有连接字符串的情况下重新初始化