Я использую context.Database.ExecuteSql для обновления таблицы. Обновление с предложением where выполняется правильно, и запись обновляется. Однако метод возвращает 2 для rowcount, а не 1. Когда я выполняю инструкцию обновления в SSMS, возвращаемый результат rowcount равен 1. Может ли кто-нибудь дать представление об этом?Database.ExecuteSqlCommand возвращает неверную строку строк
string query =
string.Format("update {0} set Description = '{1}', Code = '{2}', LastUpdatedBy = '{3}', LastUpdatedDate = '{4}' where ID = {5};",
tableName,
description,
code,
lastUpdatedBy,
lastUpdatedDate,
ID);
int rowCount = 0;
string message = string.Empty;
using (DBContext context = new DBContext())
{
rowCount = context.Database.ExecuteSqlCommand(TransactionalBehavior.EnsureTransaction, query);
}
return rowCount == 0 ? //this return 2 instead of 1.
new SaveResult(SaveResult.MessageType.Error, string.Format("There was an error updating a record in the {0} table.", tableName), "Index") :
new SaveResult(SaveResult.MessageType.Success, string.Format("The update of {0} was successful.", tableName), "Index");
Это возвращает ROWCOUNT = 1 в SSMS:
update zAddressTypes
set Description = 'Current', Code = '101122', LastUpdatedBy = 'user', LastUpdatedDate = '10/20/2014 12:17:26 PM'
where ID = 1;
DECLARE @RowCount INTEGER = @@ROWCOUNT;
select @RowCount;
Спасибо, что объясняет это. –