Gespeicherte Prozedur mit Parametern aufrufen

8

Ich habe eine gespeicherte Prozedur, die einen Wert und kein Dataset zurückgibt, und ich habe Probleme, es mit EF4 zu arbeiten.

Ich habe das gesehen: Ссылка

Folgendes habe ich getan: Ich habe dem Modell eine Prozedur hinzugefügt und eine Funktion importiert.

Das erste Problem, das ich hatte, war die Tatsache, dass die Parameter in meiner Prozedur wie @_Parameter_in heißen. Das brachte EF dazu, sie als p_Parameter_in einzubringen, weil es mit einem Unterstrich nicht als erstes Zeichen funktionieren würde. Wenn ich dann die gespeicherte Prozedur aufgerufen habe, kann ich im SQL Profiler-Aufruf sehen, dass sie nach @p_Parameter_in sucht, und natürlich gab es ein Problem damit.

Nun habe ich die Parameter umbenannt und in SQL Trace geschaut - alles sieht gut aus und funktioniert gut. Das Problem ist, dass ich den Wert nicht rausbekomme. So sieht mein Code aus:

%Vor%

Nach dem Aufruf von newKey.Value ist es immer 0 oder welcher Wert auch immer gesetzt ist. Es bringt den Wert nicht zurück. Ich vermute, dass mein Problem darin besteht, wie ich die Funktion importiere. Ich benutze Skalare und Datentyp Int32 . "Create new Complex type" ist aus irgendeinem Grund für mich deaktiviert. Hat jemand dieses Problem?

    
katit 21.02.2011, 16:06
quelle

3 Antworten

7

Ich rate hier, weil ich die gespeicherte Prozedur, die Sie anrufen, nicht sehen kann. Ich denke, Sie möchten einen Skalarwert abrufen, der von der gespeicherten Prozedur zurückgegeben wurde, und nicht den Wert eines Ausgabeparameters, wie er in der gespeicherten Prozedur definiert ist.

Ich glaube, dass Sie eine neue Funktion innerhalb des EDM definieren und auf die gespeicherte Prozedur verweisen möchten. Ein schnelles Google hat diese mögliche Lösung: Ссылка

HTH

    
Dave 21.02.2011, 16:56
quelle
2

Das Problem besteht darin, dass die Ausgabeparameter des EF-Prozesses nach dem Lesen des Datenreaders enden. Das ist normalerweise nach dem Aufrufen der DataBind () - Funktion. Ich hatte dasselbe Problem mit längeren Verarbeitungsverfahren. Ich löse dies, indem ich die Funktion .ToList () auf ObjectResult verwende.

%Vor%

Einzelne Zeilen oder Werte können Sie wahrscheinlich mit der FirstOrDefault () Funktion lösen.

    
Jan Remunda 23.01.2012 14:25
quelle
0

Ich hatte das gleiche Problem wie Jan Remunda beschrieben. Jemand hat den Rückgabetyp von Integer in Entity.Core.Objects.ObjectResult (of Integer?) Geändert, was dazu führte, dass immer nichts zurückgegeben wurde.

Für uns bestand die Lösung darin, EF zu zwingen, die Rückgabe des gespeicherten Proc durch Hinzufügen der Funktion .FirstOrDefault () zur Rückgabe zu lesen.

    
Bindum 18.08.2017 18:35
quelle

Tags und Links