执行此查询时:
UPDATE test_temp SET
test_temp.aut_z3 = 2.99,
test_temp.slo_z3 = 0,
test_temp.ita_z3 = 0
WHERE test_temp.product_id_part_1 = 10877
AND test_temp.product_id_part_2 = 0
使用SSMS可行。但是,如果我尝试使用Dapper在C#中做同样的事情,那么注意到了。
它不会更新test_temp.aut_z3
字段。
C#代码:
var sqlStatement = @"
UPDATE test_temp SET
test_temp.aut_z3 = 2.99,
test_temp.slo_z3 = 0,
test_temp.ita_z3 = 0
WHERE test_temp.product_id_part_1 = 10877
AND test_temp.product_id_part_2 = 0
";
await sqlConnection.ExecuteAsync(sqlStatement, null, null, DapperHelper.CommandTimeout);
我也尝试过这样,但结果是一样的。什么都没发生:
var sqlStatement = @"
UPDATE test_temp SET
test_temp.aut_z3 = @aut_z3,
test_temp.slo_z3 = @slo_z3,
test_temp.ita_z3 = @ita_z3
WHERE test_temp.product_id_part_1 = @product_id_part_1
AND test_temp.product_id_part_2 = @product_id_part_2
";
var sqlParameters = new
{
product_id_part_1 = 10877,
product_id_part_2 = 0,
aut_z3 = 2.99,
slo_z3 = 0,
ita_z3 = 0
};
await sqlConnection.ExecuteAsync(sqlStatement, sqlParameters, null, DapperHelper.CommandTimeout);
知道为什么吗?
答案 0 :(得分:2)
问题是我在ExecuteAsync
内调用了multithreading
方法,并且在ExecuteAsync
方法返回结果之前线程已关闭。
我通过使用ExecuteAsync
方法替换Execute
方法来修复它。 .Wait()
没有帮助getawaiter
。