我正在使用EF 6 beta1 . 我有一个简单的存储过程,返回两个结果集:
ALTER PROCEDURE GetItemsByParentId @parentID int SELECT * FROM Table1 WHERE ParentID = @ parentID SELECT * FROM Table2 WHERE ParentID = @parentID
我想使用我的ObjectContext调用该存储过程 . 我首先使用数据库,我有一个edmx,但我不想将存储的proc作为函数导入,如果我不需要的话 .
我创建了两个简单的类Table1DTO和Table2DTO来存储存储过程的结果 . 对于第一个结果集,我称之为:
var result1 = ExecuteStoreQueryAsync <Table1DTO>(“EXEC GetItemsByParentId @parentID”,new SqlParameter(“parentID”,parentID));列表table1DTOList = result1.ToList();
这很好 . 然后对于第二个结果集我正在尝试这个:
var result2 = result.GetNextResult <Table2DTO>(); List improvementDetailInfos = result2.ToList();
问题是result2返回null . 我错过了什么?
1 回答
这可能听起来像分裂头发,但实体框架支持多个结果集 . 问题是实体框架工具没有 . 这是EF 4.1 / 4.2以来的一个问题 . 所以你有三个选择(我能想到):
将您的调用分成仅使用单个结果集
对需要多个结果集的少数关键存储过程使用替代技术(小巧玲珑?)
手动编辑EDMX以创建
GetItemsByParentId
的多结果集映射说实话,我've wrestled with this in a number of scenarios and none of the options are great. If you'是一个受虐狂的东西,我wrote up an example和answered a question关于如何编辑多个结果集的EDMX .