私は、Oracleデータベースを扱うAsp.net MVC Webアプリケーションで作業しています。統計ダッシュボードページがあります。.netフレームワークからOracleのストアドプロシージャを呼び出す方法は?
私はEntity FrameworkをODP.Netでコードファーストで使用していますが、Entity Frameworkのクエリが非常に複雑であるため、このページのパフォーマンスの問題に直面しています。
したがって、Entity Frameworkクエリをストアドプロシージャに変換する必要があります。
は、例えば:私は自分のコードにデータセットを戻すには、このSPに別の選択を追加する方法
CREATE OR REPLACE PROCEDURE Schema.DashBoardStatistics
(
-- Add the parameters for the stored procedure here
p_YearId number, cur OUT SYS_REFCURSOR
)
AS
BEGIN
-- select top 5 Fields By rating Rating
Open cur FOR Select * FROM Schema."Logs" where Schema."Logs"."Id"= p_YearId ;
END;
/
ヒキガエル
に次のストアドプロシージャを作成しましたか?これをコードから呼び出して、このデータセットをモデルクラスで受け取るにはどうすればよいですか?
お知らせ:私は私のエンティティに
感謝を返すデータセットをマップできるようにするには、ストアドプロシージャではないADO.NET を実行するために、エンティティフレームワーククエリを使用したいです!
[C#からOracleストアドプロシージャを呼び出す]の可能な複製?(http://stackoverflow.com/questions/3940587/calling-oracle-stored-procedure-from-c) – Igor
1.エンティティをストアドプロシージャにマップすることができます誰もあなたのためのコードを書くつもりはありません。最善の策は、Entity Frameworkとストアドプロシージャのチュートリアルに従うことです(多くの方法があります)。あなたが立ち往生したら(*試しに*する必要があります)、それを打ち、いくつかのコードで戻ってきてください。 2.ストアドプロシージャを手動で実行し、結果をエンティティにマップする場合、重複リンクはある程度有効です。 – Igor
EFはCRUDに適しています。これのために - それほど多くはありません。モデルのプロパティに結果セットフィールドを一致させることができるモデルハイドレーターを作成します。どのように2を選択するのですか? - 'p_YearId number、cur1 OUT SYS_REFCURSOR、cur2 OUT SYS_REFCURSOR' –