c# - ConnectionString 属性尚未初始化 Dapper 的错误
问题描述
我执行 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();
var sql = "sql query"
foreach (var id in idlist)
{
var parameters = ....
await _connection.ExecuteAsync(sql, parameters);
}
_connection.Close();
如果您只执行一次,请省略打开和关闭(Dapper 会这样做),除非您的连接已注册到事务中
_connection
就像它是一个类级别的变量一样命名。确保循环运行时您没有在其他地方操作它。我不会说你通过引用一个连接获得了很多,也许考虑一下:
using var connection = new SqlConnection("your conn string");
connection.Open();
var sql = "sql query"
foreach (var id in idlist)
{
var parameters = ....
await _connection.ExecuteAsync(sql, parameters);
}
connection.Close();
错误处理将根据您想要执行的操作而有所不同,例如,如果一个插入在批处理中失败 - 全部转储,停止并修复,忽略并继续。
推荐阅读
- javascript - 来自python数据框的Google图表无法绘制
- python - 当我尝试将 Datetime 对象与不同的日期进行比较时,它返回 NoneType
- python - Python - 将字符串拆分为字典
- django - Django:使用夹具和 uuid 的 OnetoOne 关系
- jenkins - Jenkins 作业没有在两个从代理上运行
- node.js - 为什么我的任何 http 方法都不能在我的新路由器文件夹中工作?我该如何解决?
- linux - 如何将此目录中所有文件的长列表创建到名为 etcFiles.txt 的文件中(在 Linux 中)
- reactjs - 在反应js中将数据附加为表格
- jquery - table2excel:Excel 文件已下载但未在 msoffice 中打开
- python - 如何在 Jinja 2 模板中传递转义字符串变量