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:处理从存储过程返回的多个结果集