Mam procedura składowana, która zwraca wartość, a nie zestaw danych i mam problemy z uruchomieniem go do pracy z EF4.Wywoływanie procedury składowanej z parametrami
Widziałem to: http://dotnet.dzone.com/news/how-retrieve-stored-procedure
Oto co zrobiłem: dodałem procedurę modelu i importowane funkcję.
Pierwszy problem, jaki miałem, to fakt, że parametry w mojej procedurze mają nazwę: @_Parameter_in
. To sprawiło, że EF wprowadził je jako p_Parameter_in
, ponieważ nie działałoby z podkreślnikiem jako pierwszym znakiem. Następnie, gdy zadzwoniłem do procedury przechowywanej, widzę w wywołaniu SQL Profiler, że szuka @p_Parameter_in
i oczywiście nie było z tym problemu.
Teraz zmieniłem nazwę parametrów i zajrzałem do SQL Trace - wszystko wygląda i działa świetnie. Problem polega na tym, że nie mogę uzyskać wartości. Oto jak wygląda mój kod:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
Po wywołaniu newKey.Value
, to zawsze wartość 0 lub cokolwiek ustawić go. Nie przywraca wartości. Podejrzewam, że mój problem dotyczy sposobu importowania funkcji. Używam Skalarów i typu danych Int32
. "Utwórz nowy typ złożony" jest dla mnie wyłączony z jakiegoś powodu. Ktoś miał ten problem?
To jest coś do obejrzenia, mogę po prostu zmodyfikować procedurę do pracy w ten sposób. Obecnie nie zwracam wartości skalarnej. Przypisuję wartość do parametru OUTPUT w procedurze przechowywanej. – katit
To też nie działa. Wystąpił błąd "Czytnik danych zwrócony przez dostawcę danych sklepu nie ma wystarczającej liczby kolumn dla żądanego zapytania" – katit
OK, udało mi się. Umieszczając select @MyValue na końcu zapisanego proc. Pytanie jest nadal otwarte, jeśli możliwe jest użycie parametrów WYJŚCIA z EF .. – katit