Десятичный выходной параметр, округленный до целого числа в EF5.0
Мы используем существующую хранимую процедуру базы данных, аналогичную приведенной ниже, которая возвращает десятичный вывод,
CREATE PROCEDURE spTest(@a int, @b decimal(18,2) output)
as
BEGIN
SELECT @b=23.22
SELECT * FROM where id = @a
END
Когда я вызываю хранимую процедуру в приложении C # (код ниже), я получаю результат для выходного параметра как 23 вместо 23.22
ObjectParameter b = new ObjectParameter("b", typeof(System.Decimal))
var result = myentities.context.spTest(1234, b)
Это точно такая же проблема, опубликованная Имре Хорватом (http://social.msdn.microsoft.com/Forums/en-US/14bdde82-c084-44dd-ad83-c1305cb966d2/decimal-output-parameter-rounded-to-integer) но разница в том, что мы используем SQL Server 2008 и Entity Framework 5.0. Прочитав предложение из его поста, я открыл файл edmx в редакторе xml и заметил следующее для выходного параметра @b, как показано ниже:
;
Я изменил это на
;
и запустить приложение, и я получил результат, как и ожидалось (23.22)
Это обходной путь, но не решение, поскольку вы знаете, что изменения будут потеряны, когда мы обновим хранимую процедуру в конструкторе структуры сущностей. В нашей базе данных у нас есть много хранимых процедур, которые имеют десятичный (18,2) в качестве выходного параметра. Я'Мне интересно, это все еще проблема в рамках структуры 5.0. Ваша помощь будет высоко ценится.
Кумар