Команда обновления не работает

#c# #ado.net #sqlclient

#c# #ado.net #sqlclient

Вопрос:

У меня есть следующий код. Как вставка, так и удаление работают, за исключением обновления. Я использовал профилировщик SQL Server, чтобы отследить его и обнаружил, что SQL не выдается для обновления. Я тестировал со dt.Rows[0].RowState значением «Изменено».

 using(var scope = new TransactionScope())
{
    using (var con = new SqlConnection(ConnectionString))
    {
        con.Open();
        var da = new SqlDataAdapter("select * from table", con);
        var cb = new SqlCommandBuilder(da);
        cb.ConflictOption = ConflictOption.OverwriteChanges;

        da.UpdateCommand = cb.GetUpdateCommand();
        da.InsertCommand = cb.GetInsertCommand();
        da.DeleteCommand = cb.GetDeleteCommand();
        da.UpdateBatchSize = 2000;
        da.Update(dt);
    }
    scope.Complete();
}
  

Комментарии:

1. вы проверили, что сгенерированная команда update sql выглядит нормально?

2. Обновление SQL будет в порядке, если я построчно отслеживаю метод. Это было update table where Id = @p1 , если я установил точку останова в последней строке в блоке. Ошибки / исключения нет.

3. ваша команда обновления должна выглядеть следующим образом: UPDATE [table] SET [x] = @p1, [y] = @p2, ГДЕ [x] = @p3 … без SET это не может работать…

4. Я знаю. Как ни странно, отладчик показал два разных результата. И ошибки нет.