По соображениям производительности я пытаюсь использовать Entity Frameworks ExecuteSqlCommand для массового обновления данных. ctx.Database.ExecuteSqlCommand(updateQuery, new object[] {newValue});
Entity Framework ExecuteSqlCommand массовое обновление
Однако у меня возникли проблемы с установкой поля Value моего стола. Он должен умножить имеющееся значение на коэффициент, но я получаю следующее сообщение об ошибке:
Additional information: Error converting data type nvarchar to numeric.
newValue = "Value * 56,25";
String updateQuery = @"UPDATE dbo.BudgetLine_type1_unpivoted set Value = {0} where valueTypeID='Value2' AND Dim2 in ('712','718','722') AND Dim4 = '110' AND Period = 1"
int noRowsAffected = db.Database.ExecuteSqlCommand(updateQuery, new object[] {newValue});
При установке новое_значение на «1» или просто «Value» (ничего не меняя) он работает отлично
Как я должен делать умножение? Значение поля имеет тип DECIMAL (28,6)
иногда это значение Value = Value *, и в других случаях это будет просто Value = X, поэтому ваш пример не будет работать в этом случае, я боюсь. Я попробовал заменить {0} на @ p0, но до сих пор не повезло – JohanLarsson
ok, обновил ответ, чтобы принять это во внимание. – Rhumborl
Большое спасибо, что сделал трюк. Я думаю, что моя проблема заключалась в том, что я хранил значение «Value * 56.25» в строке, а не в десятичной системе при попытке запустить обновление. Ура! :) – JohanLarsson