Dziesiętny parametr wyjściowy zaokrąglony do liczby całkowitej w EF5.0

Używamy istniejącej procedury przechowywanej bazy danych podobnej do poniższej, która zwraca wynik dziesiętny,

CREATE PROCEDURE spTest(@a int, @b decimal(18,2) output)
as
BEGIN
   SELECT @b=23.22
   SELECT * FROM <TABLE> where id = @a
END

Gdy wywołam procedurę przechowywaną w aplikacji C # (kod poniżej), otrzymuję wynik dla parametru wyjściowego jako 23 zamiast 23.22

ObjectParameter b = new ObjectParameter("b", typeof(System.Decimal))
var result = myentities.context.spTest(1234, b)

To dokładnie ten sam numer opublikowany przez Imre Horvatha (http://social.msdn.microsoft.com/Forums/en-US/14bdde82-c084-44dd-ad83-c1305cb966d2/decimal-output-parameter-rounded-to-integer) ale różnica polega na tym, że używamy SQL Server 2008 i framework 5.0. Po przeczytaniu sugestii z jego postu otworzyłem plik edmx w edytorze xml i zauważyłem następujące parametry wyjściowe @b, jak poniżej,

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

Zmieniłem go na

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

i uruchom aplikację, a otrzymałem wynik zgodnie z oczekiwaniami (23,22)

Jest to obejście, ale nie rozwiązanie, ponieważ wiadomo, że zmiany zostaną utracone, gdy zaktualizujemy procedurę składowaną w projektancie szkieletu encji. W naszej bazie danych mamy wiele procedur składowanych, które mają parametr dziesiętny (18,2) jako parametr wyjściowy. Zastanawiam się, czy nadal jest to problem w ramach jednostki 5.0. Twoja pomoc zostanie bardzo doceniona.

Kumar

questionAnswers(3)

yourAnswerToTheQuestion