Ich habe in den letzten Tagen mit dem EF gespielt. Unsere Anwendungen basieren auf SQL Anywhere 10-Datenbanken, und unser gesamter Datenzugriff erfolgt über gespeicherte Prozeduren. Da EF nicht von SA 10 unterstützt wird, teste ich EF mit SA 11. Zu diesem Zweck habe ich eine kleine Datenbank mit 2 Tabellen und ein paar Stored Procedures erstellt (basierend auf der nerddinner Datenbank aus den asp.net mvc samples, siehe here) Ich habe ein Modell aus der Datenbank, Tabellen und gespeicherten Prozeduren erstellt und die notwendigen Funktionsimporte durchgeführt. Ich habe eine gespeicherte Prozedur mit der folgenden Signatur:Entity Framework + Sql Anywhere 11 + Gespeicherte Prozeduren
ALTER PROCEDURE "DBA"."get_dinner"(@dinner_id integer)
BEGIN
select dinner_id, title, event_date, description, hosted_by , contact_phone, address, country, latitude, longitude
from dba.dinners d
where d.dinner_id = @dinner_id
END
Und die resultierende Funktion Import-Code sieht wie folgt aus:
public global::System.Data.Objects.ObjectResult<dinner> get_dinner(global::System.Data.Objects.ObjectParameter dinner_id)
{
return base.ExecuteFunction<dinner>("get_dinner", dinner_id);
}
Und das ist das Problem. Idealerweise erzeugt der Code sollte einen int-Parameter akzeptieren, statt global::System.Data.Objects.ObjectParameter dinner_id
Soweit ich sehen, die edmx Datei hat alle Daten, die es richtig die Parametertypen interpretieren muss:
<Function Name="get_dinner" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false" ParameterTypeSemantics="AllowImplicitConversion" Schema="DBA">
<Parameter Name="dinner_id" Type="int" Mode="InOut" />
</Function>
Fehle ich etwas hier? Was ist sonst noch nötig, um einen Funktionsimport mit dem richtigen Parametertyp zu haben? Ist das etwas, das Sie korrigieren können, indem Sie die EDMX-Datei optimieren, oder ist es ein Problem der SA11 EF-Unterstützung.
Hoffe jemand kann mir weitere Hinweise geben.
Danke für die Antwort. Ich werde versuchen, die edmx-Datei zu ändern und sehen, ob es funktioniert. Der Funktionsimport, wie er gerade erzeugt wird, funktioniert, nur der Parametertyp nervt mich. – Gio2k
Es funktioniert. Hoffentlich wird das Problem mit den Inout-Parametern bald gelöst sein. – Gio2k