EntityDataSourceからストアドプロシージャを呼び出すことはできますか?

asp.net entity-framework stored-procedures

質問

(ASP.net 3.5、C#、SQL Express 2008)

ユーザーが入力したキーワードを使用して「ソリューション」(私のテーブル)を検索し、結果が返されてGridViewに値を設定した後のWebフォームが必要です。

この検索の一部は、Entity Data Modelに接続されているストアドプロシージャを介して既に行っています。このページにはEntityDataSourceがあります。 このEntityDataSourceでストアドプロシージャからデータを取得する方法を教えてください。

Entityコンテキスト(うまくいく)を介して結果を取得し、それをグリッドにバインドすることができればいいのですが、それをEntityDataSourceにフックしなければ、自動ページングとソートはできません(これは別の方法です)。過去の私の闘争)

受け入れられた回答

Function Importを使ってみてください。

  1. EntitySet Name(見出し部分)を右クリックします
  2. 追加 - >機能インポートを選択します。

これはあなたがチェックアウトするのに良いブログ投稿です。 ADO.NET Entity Frameworkツール:ストアドプロシージャ、Guy Burstein著

更新: EntityDataSourceに関する部分を見逃したので申し訳ありませんが、EDSから関数インポートにアクセスするために公開されているプロパティはわかりませんが、CommandTextプロパティを使用することはできます。

<asp:EntityDataSource ID="SolutionsDataSource" runat="server" 
    CommandText="DataModel.SearchFunction(@Keywords)"
    ConnectionString="name=AdventureWorksEntities">
    <CommandParameters>
        <asp:ControlParameter Name="Keywords" 
            ControlID="SearchTextbox" Type="String"/>
    </CommandParameters>
</asp:EntityDataSource>

更新:ええ、それは私には悪い知らせがあるようです。 Reflectorを使用してEntityDataSource深く入り込んだ後。 EntityDataSourceViewQueryBuilderUtils.ConstructQueryを使用してQueryBuilderUtils.ConstructQuery 、次にQueryBuilderUtils.ConstructQuerycontext.CreateQuery<T>呼び出します。関数importを実行するために必要なのはcontext.ExecuteFunction<T>への呼び出しです。このリリースではExecuteFunctionはサポートされていないようです。私が読んでいたブログでは計画されていると述べていましたが、将来のリリースでできるかどうかは関係ありません。言わないで。

それでも、ページング、ソートなどをサポートする方法で構築できるObjectDataSourceを使用することをお勧めします。このトピックについてObjectDataSourceの質問をした場合は、ここにコメントを送ってください。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ