EF存储过程调用返回什么类型的对象?

时间:2014-08-05 13:51:31

标签: entity-framework stored-procedures ef-database-first

我正在使用Entity Framework(v6.1)和Database First方法。我创建了我的EDMX文件,它引用了我在通过EF向导创建EDMX时选择的存储过程。我的问题是如何使用存储过程返回的内容?

下面是我的dbContext和存储过程的名称GetHtmlContent。存储过程将contentId作为整数参数。

这是存储过程的GetHtmlContent ..

的SQL
SELECT 
   HtmlContent.contentId,
   HtmlContent.[Name] AS 'Name',
   HtmlContent.HTML AS 'HTML',
   HtmlContentCategory.CategoryTitle
FROM HtmlContent 
   LEFT JOIN HtmlContentCategory ON HtmlContent.CategoryID = HtmlContentCategory.HtmlContentCategoryID
WHERE HtmlContent.ContentId= @ContentId

当我将鼠标悬停在dataContext中包含的存储过程方法上以查看返回的内容时,我会得到以下内容。

System.Data.Entity.Core.Objects.ObjectResults<GetHtmlContent_Result> dbContext.GetHtmlContent(contentId)

这是我感到困惑的地方......

  1. <GetHtmlContent_Result>是表示存储过程返回的数据集的类型吗?
  2. 什么是System.Data.Entity.Core.Objects.ObjectResults
  3. 由于我接受存储过程中的记录集合,我是否需要创建一个类来保存存储过程的结果?

1 个答案:

答案 0 :(得分:2)

是表示存储过程返回的数据集的类型吗?

GetHtmlContent_Result表示由存储过程生成的每条记录。

HtmlContent.contentId,
HtmlContent.[Name] AS 'Name',
HtmlContent.HTML AS 'HTML',
HtmlContentCategory.CategoryTitle

什么是System.Data.Entity.Core.Objects.ObjectResults?

  

ObjectResult是一个可枚举的集合类,但它是一个   仅向前收集所以一旦被列举,你就不能   再次列举它。例如,如果在结果上调用ToList,   例如,GetDetailsForOrder(3)。ToList(),那么你不能随后   通过再次调用ToList激活另一个枚举,绑定   结果是控制或执行结果的foreach。 - MSDN

由于我接受存储过程中的记录集合,我是否需要创建一个类来保存存储过程的结果?

就像其他实体代表数据库中的表一样,POCO。你可以直接使用它。