starałem się dostać kod status wykonania procedury przechowywanej, gdy napotkał ten błąd:Czytelnik danych ma błędu więcej niż jedno pole podczas wywoływania procedury, która zwraca liczbę całkowitą
An exception of type 'System.Data.Entity.Core.EntityCommandExecutionException' occurred in EntityFramework.SqlServer.dll but was not handled in user code
Additional information: The data reader has more than one field. Multiple fields are not valid for EDM primitive or enumeration types.
mam przepisany procedurę zrobić absolutnie nic, ale zwraca wartość całkowitą, to jak to wygląda teraz:
ALTER Procedure [dbo].[test]
(
@i int,
@a nvarchar(max),
@b nvarchar(max),
@c nvarchar(max),
@d nvarchar(max)
)
As
Begin
SET NOCOUNT ON
return 1
End
ale nadal ten sam błąd w czasie wykonywania po osiągnięciu wywołanie procedury na linii:
this.Database.SqlQuery<int>("test @i, @a, @b, @c, @d", p_i, p_a, p_b, p_c, p_d).FirstOrDefault();
Czy mimo to można dowiedzieć się, jakie są te pola i skąd pochodzą? I jak mam odzyskać zwróconą wartość?
Próbowałem określić krotka dwa ciągi jak T
tylko patrzeć na te wartości, ale bez powodzenia ...
Aktualizacje:
Select 1
zamiast return 1
sprawia funkcję użytkową , pozostaje tylko pytanie, jakie są te tajemnicze pola, które są zwracane do czytnika danych?
spróbuj z 'wybierz 1' zamiast powrotu. – artm
Wyświetlany kod wywołuje inny zapisany proces niż ten, który został zmodyfikowany, co może potencjalnie wyjaśnić problem (chyba że w poście wystąpiło literówka). –
@competent_tech Przepraszamy, to nazwa oryginalnej funkcji, która została uproszczona, to tylko literówka w poście ... – Jyrkka