如何从 .net 框架调用 Oracle 中的存储过程?

How to call a stored procedure in Oracle from .net framework?

我正在开发一个处理 Oracle 数据库的 Asp.net MVC 网络应用程序,并且我有一个统计仪表板页面。

我在 ODP.Net 中使用 Entity Framework 代码优先,但我在该页面上遇到性能问题,因为 Entity Framework 查询非常复杂。

所以我必须将 Entity Framework 查询转换为存储过程。

例如:我在 Toad 中创建了以下存储过程

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;
/

如何向此 Sp 添加另一个 select 到我的代码的 return 数据集?

我如何从我的代码中调用它并在模型 类 中接收这个数据集?

注意:我想使用 entity framework 查询来执行存储过程而不是 ADO.NET 能够将 return 数据集映射到我的实体

谢谢!

请参阅本演练中间的示例:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/2015/entityframework_linq_modelfirst/Entity%20Framework%20LINQ%20and%20Model%20First.html

关键是您需要一个用于 REF CURSOR 元数据的配置文件。您应该为 Visual Studio 安装 Oracle Developer Tools,然后 "Run" 使用 Server Explorer 的菜单安装存储过程。这将为您提供一个选项来自动生成包含引用游标元数据的所需配置文件。

然后按照演练填写“导入函数”对话框,该对话框将 SP 映射到实体函数。