0

我正在使用 EF 6 beta1。我有一个简单的存储过程,它返回两个结果集:

更改程序 GetItemsByParentId

@parentID 整数

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 >();

列表改进DetailInfos = result2.ToList();

问题是 result2 返回为空。我错过了什么?

4

1 回答 1

0

这可能听起来像分裂的头发,但 Entity Framework支持多个结果集。问题是实体框架工具没有。自 EF 4.1/4.2 以来,这一直是一个问题。所以你有三个选择(我能想到的):

  1. 拆分您的呼叫以仅使用单个结果集
  2. 对需要多个结果集的少数关键存储过程使用替代技术(dapper?)
  3. 手动编辑 EDMX 以创建多结果集映射GetItemsByParentId

老实说,我在许多情况下都与此作过斗争,但没有一个选项很好。如果你是一个受虐狂,我写了一个例子回答了一个关于如何为多个结果集编辑 EDMX 的问题。

于 2014-01-07T13:57:03.207 回答