ここ数日、私は EF で遊んでいます。当社のアプリケーションは SQL Anywhere 10 データベースに基づいており、すべてのデータ アクセスはストアド プロシージャを介して行われます。EF は SA 10 でサポートされていないため、SA 11 で EF をテストしています。この目的のために、2 つのテーブルといくつかのストアド プロシージャを含む小さなデータベースを作成しました (asp.net mvc サンプルの nerddinner データベースに基づいています。here ) データベース、テーブル、およびストアド プロシージャからモデルを作成し、必要な関数のインポートを行いました。次の署名を持つストアド プロシージャがあります。
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
結果の関数インポート コードは次のようになります。
public global::System.Data.Objects.ObjectResult<dinner> get_dinner(global::System.Data.Objects.ObjectParameter dinner_id)
{
return base.ExecuteFunction<dinner>("get_dinner", dinner_id);
}
そして、それが問題です。理想的には、生成されたコードは int パラメーターを受け入れる必要があります。 global::System.Data.Objects.ObjectParameter dinner_id
見る限り、edmx ファイルには、パラメーターの型を正しく解釈するために必要なすべてのデータが含まれています。
<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>
ここで何か不足していますか?適切なパラメータ型で関数をインポートするには、他に何が必要ですか? これは edmx ファイルを微調整することで修正できるものですか、それとも SA11 EF サポートの実装の問題ですか。
誰かが私にさらなる手がかりを教えてくれることを願っています。