Wie die Rückgabe von Werten aus einer dynamischen SQL-Gespeicherte Prozedur an, die das Entity Framework?
Ich habe eine Gespeicherte Prozedur, die ausgeführt wird, einige dynamische SQL. Ich möchte diese Gespeicherte Prozedur verwenden, die in entity framework 4, aber wenn ich versuche zu erstellen, die eine komplexe Art der Prozedur gibt keine Spalten. Gibt es eine Möglichkeit, ich kann es zwingen, zurück zu kehren, meine Werte bekommen und das entity framework zu erhalten? Hier ist eine stark vereinfachte Beispiel, was ich machen möchte:
CREATE PROCEDURE sp_calculatesalary(@EmployeeId as int)
begin
declare dynsql as varachar(500)
@dynsql='Select @Salary=Salary,@UserName=Username from employee
where EmployeeId='+cast(@EmployeeId as varchar)+ ''
exec(@dynsql)
select @Salary, @UserName
end
Aber das funktioniert nicht. Bitte helfen Sie mir. Im Grunde möchte ich eine Gespeicherte Prozedur zum ausführen von dynamischer SQL und Rückkehr der Werte auf das entity framework.
- Warum verwenden Sie dynamisches SQL für diese ?
- Ist es nur eine einfache demo-Fall, oder ist Ihre dynamische Erklärung wirklich so einfach wie oben beschrieben? In diesem Fall würden Sie nicht brauchen, dynamischen SQL.
- Naja...dies ist nur ein einfaches Beispiel..ich Tue etwas Komplex....deshalb ist die Verwendung dynamischer sql...ich möchte es verwenden in entity framework..und bekomme Werte..
- Kann Sie täuschen, Entity Framework, indem Sie vorübergehend das Inverkehrbringen in dummy-code, die ein ResultSet zurückgibt von dem format, das Sie möchten? Ändern Sie anschließend die Prozedur mit dem tatsächlichen code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht könnten Sie betrachten die parametrisierte SQL, wenn Sie tun müssen, dynamische Abfragen:
versuchen, diese
Glauben Sie mir.
Das ist genug.
Oder Sie können einfach erstellen Sie eine komplexe Art basierend auf Ihrer Abfrage-Ergebnis , und verwenden Sie dann die Sammlung der komplexen Art, wie Sie Ihre query-Ergebnis.
fügen Sie die folgende Zeile am Anfang Ihrer SP
Versuchen, die unterhalb der Skript-das funktioniert gut.
gut, ich denke, das ist, was du suchst:
erzeugt dies eine öffentliche partielle Klasse sp_calculatesalary_Result in entity framework basiert DAL.
haben Sie versucht, geben Sie Aliase für Ihre Letzte Select:
Gut, wenn EF nicht erkennen, was Sie Ihre gespeicherte Prozedur zurückgeben müssen, dann erstellen Sie Ihre komplexe Art vor der Zeit. Sie können erstellen Sie ein komplexer Typ durch rechten Mausklick auf eine beliebige Stelle auf der Modell und und fügen Sie ein komplexer Typ. Weiter, wenn Sie importieren Sie Ihre gespeicherten Prozedur, können Sie Ihre komplexen Typ aus der dropdown-Liste.