C#,EF中执行存储过程返回一个ObjectResult对象,这个对象是延迟加载的吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#,EF中执行存储过程返回一个ObjectResult对象,这个对象是延迟加载的吗?相关的知识,希望对你有一定的参考价值。

参考技术A ObjectResult,这个对象是延迟加载的,有机会可以到程序人生网站上交流。

EF 4.1 从存储过程返回结果

【中文标题】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);

【讨论】:

以上是关于C#,EF中执行存储过程返回一个ObjectResult对象,这个对象是延迟加载的吗?的主要内容,如果未能解决你的问题,请参考以下文章

EF执行存储过程返回DataSet

EF执行存储过程并且返回DataSet

EF执行SQL语句和存储过程

MVC5加EF6 执行存储过程 获取表

存储过程在 ef 核心中返回旧值

EF4 - 选定的存储过程不返回任何列