Linq to sql:

来源:互联网 发布:炫彩表白软件 编辑:程序博客网 时间:2024/04/28 14:26

多结果集的存储过程

 

再来创建一个多结果集的存储过程:

 

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 inEmployeeswhere

 

emp.FirstName.Contains("A")select emp;

 

        GridView1.DataBind();

 

       GridView2.DataSource = from c inCustomerswhere

 

c.CustomerID.StartsWith("A")select c;

 

       GridView2.DataBind()