首页 文章

EntityFramework 6:具有多个结果集的ExecuteStoreQueryAsync

提问于
浏览
0

我正在使用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 回答

  • 0

    这可能听起来像分裂头发,但实体框架支持多个结果集 . 问题是实体框架工具没有 . 这是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 exampleanswered a question关于如何编辑多个结果集的EDMX .

相关问题