【发布时间】:2009-05-17 19:25:11
【问题描述】:
我有一个通过 LINQ to SQL 调用的存储过程,存储过程调用其中的另一个存储过程,并有一个 SELECT 来输出结果。 SELECT 结果没有返回到我的 LINQ to SQL,我只能获取 int 结果值。如何在存储过程中获取存储过程的选择结果
【问题讨论】:
标签: sql linq-to-sql
我有一个通过 LINQ to SQL 调用的存储过程,存储过程调用其中的另一个存储过程,并有一个 SELECT 来输出结果。 SELECT 结果没有返回到我的 LINQ to SQL,我只能获取 int 结果值。如何在存储过程中获取存储过程的选择结果
【问题讨论】:
标签: sql linq-to-sql
LINQ 设计器无法准确解析您的存储过程以确定架构。一种解决方法是将您的存储过程临时更改为适当模式的简单选择。在设计器中重新映射它。然后,将存储的过程改回原来的。通过这种方式,设计人员能够找出架构并将其正确映射到正确的实体。
【讨论】:
从 Sql Server Management Studio 调用存储过程时,是否返回多个行集?
如果是这种情况,使用 LINQ 中的存储过程并非易事,请参阅 this article。
使用 DataReader 中的 NextResult 方法可以轻松读取多个结果:
var com = yourConnection.CreateCommand();
com.CommandText = "execute dbo.YourSp 'par1'";
var read = com.ExecuteReader();
// Move to second result set and read it
read.NextResult();
while (read.Read()) {
Console.WriteLine(read["MyField"]);
}
【讨论】: