我正在使用Entity Framework(v6.1)和Database First方法。我创建了我的EDMX文件,它引用了我在通过EF向导创建EDMX时选择的存储过程。我的问题是如何使用存储过程返回的内容?
下面是我的dbContext和存储过程的名称GetHtmlContent
。存储过程将contentId
作为整数参数。
这是存储过程的GetHtmlContent
..
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)
这是我感到困惑的地方......
<GetHtmlContent_Result>
是表示存储过程返回的数据集的类型吗?System.Data.Entity.Core.Objects.ObjectResults
?答案 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。你可以直接使用它。