一步一步学Linq to sql(五):存储过程
[2] 一步一步学Linq to sql(五):存储过程
[3] 一步一步学Linq to sql(五):存储过程
[4] 一步一步学Linq to sql(五):存储过程
[5] 一步一步学Linq to sql(五):存储过程
[6] 一步一步学Linq to sql(五):存储过程
[7] 一步一步学Linq to sql(五):存储过程
系列文章导航:
一步一步学Linq to sql(二):DataContext与实体
多结果集的存储过程
再来创建一个多结果集的存储过程:
create proc [dbo].[sp_multiresultset] as set nocount on select * from customers select * from employees |
找到生成的存储过程方法:
[Function(Name="dbo.sp_multiresultset")] public ISingleResult<sp_multiresultsetResult> sp_multiresultset() { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()))); return ((ISingleResult<sp_multiresultsetResult>)(result.ReturnValue)); } |
由于现在的VS2008会把多结果集存储过程识别为单结果集存储过程(只认识第一个结果集),我们只能对存储过程方法多小动手术,修改为:
[Function(Name="dbo.sp_multiresultset")] [ResultType(typeof(Customer))] [ResultType(typeof(Employee))] public IMultipleResults sp_multiresultset() { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()))); return (IMultipleResults)(result.ReturnValue); } |
然后使用下面的代码测试:
var 多结果集存储过程 = ctx.sp_multiresultset(); var Customers = 多结果集存储过程.GetResult<Customer>(); var Employees = 多结果集存储过程.GetResult<Employee>(); GridView1.DataSource = from emp in Employees where emp.FirstName.Contains("A") select emp; GridView1.DataBind(); GridView2.DataSource = from c in Customers where c.CustomerID.StartsWith("A") select c; GridView2.DataBind() |