【发布时间】:2014-08-06 16:48:58
【问题描述】:
所以,我试图在实体框架中实现具有多个结果集的存储过程。 这一切似乎太容易了。 但是,我的结果集没有得到任何行(尽管,我似乎确实得到了结果集本身)。
我做了什么:
- 创建了返回3个结果集的存储过程
- 创建了表示返回值的复杂类型
- 按照Stored Procedures with Multiple Result Sets手动编辑edmx文件
- 使用 3 失败并尝试了同一页面中的代码版本,但仍然没有返回任何行。
- 将代码恢复为 3。
我的 edmx 文件(仅相关内容):
<FunctionImport Name="getGlobalReport2">
<ReturnType Type="Collection(MTModel.GlobalReport2)"/>
<ReturnType Type="Collection(MTModel.GlobalReport2)"/>
<ReturnType Type="Collection(MTModel.GlobalReport2)"/>
<Parameter Name="regions" Mode="In" Type="String" />
<Parameter Name="countries" Mode="In" Type="String" />
<Parameter Name="companySizes" Mode="In" Type="String" />
<Parameter Name="products" Mode="In" Type="String" />
</FunctionImport>
<FunctionImportMapping FunctionImportName="getGlobalReport2" FunctionName="MTModel.Store.getGlobalReport2" >
<ResultMapping>
<ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
</ResultMapping>
<ResultMapping>
<ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
</ResultMapping>
<ResultMapping>
<ComplexTypeMapping TypeName="MTModel.GlobalReport2" />
</ResultMapping>
</FunctionImportMapping>
我的代码:
var x = mtEntities.getGlobalReport2(regions, countries, companySizes, products);
Response.Write(x.Count());
var y = x.GetNextResult<GlobalReport2>();
Response.Write(y.Count());
var z = x.GetNextResult<GlobalReport2>();
我已经检查过的内容:
- 检查服务器是否按照How can I view live MySQL queries?收到请求
- 运行我从服务器抓取的查询并确保它返回结果集和行
- 调试应用程序以查看我在途中没有错过任何异常
调用或应用似乎没有问题,只是没有返回任何行。 有什么建议吗?
编辑:
根据您关于edmx 被覆盖的cmets,只有当我从数据库重新生成模型时才会发生这种情况,而不是如果我更新它。
我不会期待别的,因为它会重新生成模型。
【问题讨论】:
-
您必须使用 EDMX 文件吗?如果它重新生成,您将失去自定义。
-
我不必使用它,但这仍然不能解决手头的问题。
-
我刚刚意识到这是 MySQL,而不是 MSSQL,但我最近使用 msdn.microsoft.com/en-us/data/jj691402.aspx 的“使用代码访问多个结果集”部分使用 MSSQL 进行了这项工作。