Десятичный выходной параметр, округленный до целого числа в EF5.0

Мы используем существующую хранимую процедуру базы данных, аналогичную приведенной ниже, которая возвращает десятичный вывод,

CREATE PROCEDURE spTest(@a int, @b decimal(18,2) output)
as
BEGIN
   SELECT @b=23.22
   SELECT * FROM <TABLE> 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, как показано ниже:

<Parameter Name="b" Type="decimal" Mode="InOut"/>;

Я изменил это на

<Parameter Name="b" Type="decimal" Mode="InOut" Precision="18" Scale="2"/>;

и запустить приложение, и я получил результат, как и ожидалось (23.22)

Это обходной путь, но не решение, поскольку вы знаете, что изменения будут потеряны, когда мы обновим хранимую процедуру в конструкторе структуры сущностей. В нашей базе данных у нас есть много хранимых процедур, которые имеют десятичный (18,2) в качестве выходного параметра. Я задаюсь вопросом, это все еще проблема в структуре лица 5.0. Ваша помощь будет высоко ценится.

Кумар

Ответы на вопрос(3)

Ваш ответ на вопрос