私はここ数日間、EFで遊んでいます。 アプリケーションはSQL Anywhere 10データベースに基づいており、すべてのデータアクセスはストアドプロシージャを使用して行われます。 EFはSA 10でサポートされていないため、SA 11でEFをテストしています。 この目的のために、私は2つのテーブルと2つのストアドプロシージャ(asp.net mvcサンプルのnerddinnerデータベースに基づいて、 hereを参照してください) データベース、テーブル、ストアドプロシージャからモデルを作成し、必要な関数インポートを行いました。 は、私は次のシグネチャを持つストアドプロシージャを持っている:エンティティ・フレームワーク+ SQL Anywhere 11 +ストアド・プロシージャ
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);
}
そして、それが問題です。理想的には、生成されたコードではなく、私の知る限り見るようにglobal::System.Data.Objects.ObjectParameter dinner_id
の、int型のパラメータを受け入れる必要があり、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サポートの実装の問題ですか。
誰かが私にさらなる手がかりを与えてくれることを願っています。
感謝を助けます。私はedmxファイルを修正し、それが動作するかどうかを調べるつもりです。現時点で生成された関数のインポートが機能しますが、それは私を悩ますパラメータの型だけです。 – Gio2k
それは動作します。うまくいけば、inoutパラメータの問題はすぐに解決されるでしょう。 – Gio2k