无法更新mssql中的十进制字段

时间:2018-05-04 10:42:30

标签: c# sql-server dapper

执行此查询时:

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);

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

问题是我在ExecuteAsync内调用了multithreading方法,并且在ExecuteAsync方法返回结果之前线程已关闭。 我通过使用ExecuteAsync方法替换Execute方法来修复它。 .Wait()没有帮助getawaiter