EF 4.1 从存储过程返回结果

Posted

技术标签:

【中文标题】EF 4.1 从存储过程返回结果【英文标题】:EF 4.1 Return Results from Stored Procedure 【发布时间】:2015-04-14 10:08:51 【问题描述】:

我是 EF 新手,刚刚创建了一个新的存储过程来返回一些基本信息

CREATE PROCEDURE GetTop10Clients
   @AccountId NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT TOP 10  
        Client.Name, Count(Client.Name) AS Number
    FROM           
    WHERE        
        (Client.AccountId = @AccountId)
    GROUP BY 
        Client.Name
    ORDER BY 
        Number DESC
END
GO

然后我添加到我的 edmx 并创建了一个名为 GetTop10Clients 的函数导入以返回一个复杂的 GetTop10Clients_Result(紧随 http://www.entityframeworktutorial.net/EntityFramework4.3/execute-stored-procedure-using-dbcontext.aspx)

但我不知道怎么称呼它

namespace ClientSystem.Repositories.Ef

    public class AccountRepository : IAccountRepository
    
        public AccountRepository(ObjectSet<Account> set ,ObjectContext ctx) : base(ctx,set)
        
        

        public DashboardStats GetTop10Stats(string accountId)
        
            //var results = GetTop10Clients(accountId); ??????
            return null;
        
    

感谢您的帮助,示例会很棒。

【问题讨论】:

【参考方案1】:

您将在objectcontext/dbcontext 中生成一个函数,如下所示。

public virtual ObjectResult<GetTop10Clients_Result> GetTop10Clients(Nullable<int> accountId)

    .....

你可以像下面这样调用那个方法。

using (var context = new ObjectContext())

    var clients = context.GetTop10Clients(1);

【讨论】:

以上是关于EF 4.1 从存储过程返回结果的主要内容,如果未能解决你的问题,请参考以下文章

Apache DbUtils:处理从存储过程返回的多个结果集

存储过程在 SSMS 中执行时都返回结果,但从代码执行时只有一个返回结果

Oracle 存储过程返回结果集

从返回多个结果集的存储过程中插入临时表

调用另一个存储过程后从存储过程返回错误结果

Spring的存储过程-从过程返回的结果总是空的