Ho una procedura memorizzata che restituisce un valore, non un set di dati e ho problemi a farlo funzionare con EF4.Chiamata alla stored procedure con parametri
Ho visto questo: http://dotnet.dzone.com/news/how-retrieve-stored-procedure
Ecco quello che ho fatto: ho aggiunto una procedura per il modello, e importato una funzione.
Il primo problema che ho avuto è stato il fatto che i parametri nella mia procedura sono denominati come @_Parameter_in
. Ciò ha portato EF a introdurli come p_Parameter_in
perché non avrebbe funzionato con un carattere di sottolineatura come primo carattere. Quindi, quando ho chiamato la stored procedure, posso vedere nella chiamata di SQL Profiler che cerca @p_Parameter_in
e ovviamente c'era un problema con quello.
Ora ho rinominato i parametri e ho esaminato SQL Trace: tutto sembra e funziona alla grande. Il problema è che non riesco a ottenere il valore. Ecco come il mio codice è:
System.Data.Objects.ObjectParameter newKey = new System.Data.Objects.ObjectParameter("NewKey_out", typeof(Int32));
newKey.Value = 0;
context.GetNextSurrogateKey_v2("tTest", newKey);
Dopo aver chiamato newKey.Value
, è sempre 0 o qualsiasi valore ho impostato a. Non riporta il valore. Ho il sospetto che il mio problema sia relativo all'importazione della funzione. Io uso Scalari e tipo di dati Int32
. "Crea nuovo tipo complesso" è disabilitato per me per qualche motivo. Qualcuno aveva quel problema?
Questo è qualcosa da guardare, potrei semplicemente modificare la procedura per lavorare in questo modo. Attualmente non restituisco il valore scalare. Assegno il valore al parametro OUTPUT nella stored procedure. – katit
Anche questo non funziona. Ottengo l'errore "Il lettore di dati restituito dal fornitore di dati del negozio non ha colonne sufficienti per la richiesta richiesta" – katit
Ok, l'ho fatto funzionare. Con l'inserimento selezionare @MyValue alla fine del processo memorizzato. La domanda è ancora aperta se è possibile utilizzare i parametri OUTPUT con EF. – katit