.NET Entwicklung
Posts 1-2 of 2
-
Marco Seraphin Premium MemberThe company name is only visible to registered members.Fehler bei StoredProc Aufruf aus Entity FrameWork
Hallo,
ich habe eine Anwendung mit dem EF. Abfrragen via Linq und das Aktualiseren/Erzeugen von Datensätzen via context.SaveChanges() klappt alles wunderbar.
Jetzt möchte ich eine StoreProc (CLR, geschrieben in C#) über das Model aufrufen und bekomme immer folgenden Fehler:
==> The data reader returned by the store data provider does not have enough columns for the query requested.
Die StoredProc hat einige Input und Output-Parameter. Eigentlich keinen Rückgabewert. Ich habe daher im Dialog im EF-Model via "Add => Function Import" zunächst als Rückgabewert "NONE" angegeben.
Dann wurde überhaupt kein Wrapper in der xxxPOCO.Context.cs Datei erstellt. Ich habe dann einfach mal Int32 als Rückgabewert definiert und dann angegeben. (Eigentlich brauche ich eine "Decimal"-Rückgabewert, aber der ist ja nicht erlaubt).
[Microsoft.SqlServer.Server.SqlProcedure]
public static int sp_CalcHonoDetail(out SqlString value, bool recalculate, string IntNr, string locID, string projID, string survName, string TCodeTypeID, string TCodeNo, DateTime startTime, DateTime endTime, out SqlString outBasisHono, out SqlString outValueEurPerHour, out bool outProjectSpecificHono)
{
// Use StoredProc DB connection
using (SqlConnection con = new SqlConnection("Context Connection=true"))
{
...// Hier die Logik
}
}
Egal in welcher Form ich die StoredProc aufrufe (über den logischen/gewrappten Funktionsnamen in der Context.cs Datei oder "direkt" über .ExecuteFunction() ich bekomme immer den Fehler
==> The data reader returned by the store data provider does not have enough columns for the query requested.
wie oben angegeben zurück.
Hat da jemand einen Tipp ? Mach ich mit den Parameter was falsch ?
Kann man überhaupt eine CLR/C# basierte StoredProc aus dem EF aufrufen ?
Hier noch mal die erzeugte SP-Definition in der Context.cs-Datei.
#region Function Imports
public ObjectResult<Nullable<int>> SP_CalcHono(ObjectParameter value, Nullable<bool> recalculate, string intNr, string locID, string projID, string survName, string tCodeTypeID, string tCodeNo, Nullable<System.DateTime> startTime, Nullable<System.DateTime> endTime, ObjectParameter outBasisHono, ObjectParameter outValueEurPerHour, ObjectParameter outProjectSpecificHono)
{
}
Danke schon mal im voraus für Eure Hilfe.
Marco
- 16 May 2011, 10:35 am
-
Jürgen Fröhlich Premium MemberThe company name is only visible to registered members.Re: Fehler bei StoredProc Aufruf aus Entity FrameWork
Die Stored Procedure muss die Anzahl der Zeilen der betroffenen Zeilen zurückgeben. Bei NONE also wenigstens 0. Die Rückgabe von NONE oder null führt zu dem beschriebene Problem. Für weitere Details:
http://stackoverflow.com/questions/3837634/functionimport-in...
- 16 May 2011, 10:20 pm
