Не удается обновить десятичное поле в mssql - PullRequest
0 голосов
/ 04 мая 2018

Когда я выполняю этот запрос:

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 это работает. Но если я попытаюсь сделать то же самое в C #, используя Dapper, то это произойдет.

Не обновляется поле 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 голосов
/ 04 мая 2018

Проблема заключалась в том, что я вызвал метод ExecuteAsync внутри multithreading, и поток был закрыт до того, как метод ExecuteAsync вернул результат. Я исправил это, заменив метод ExecuteAsync на метод Execute. .Wait() не помогло, ни getawaiter.

...