故事前提。。。。。。。。。。
一、返回顺序结果集
存储过程实例
CREATE PROCEDURE MultipleResultTypesSequentiallyASselect * from productsselect * from customers
修改vs生成的存储过程代码
[Function(Name="dbo.MultipleResultTypesSequentially")] [ResultType(typeof(MultipleResultTypesSequentiallyResult1))] [ResultType(typeof(MultipleResultTypesSequentiallyResult2))] public IMultipleResults MultipleResultTypesSequentially() { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()))); return ((IMultipleResults)(result.ReturnValue)); }
调用存储过程
IMultipleResults sprocResults = db.MultipleResultTypesSequentially();// First read products.foreach (Product prod in sprocResults.GetResult()){ Console.WriteLine(prod.ProductID);}// Next read customers.foreach (Customer cust in sprocResults.GetResult ()){ Console.WriteLine(cust.CustomerID);}
二、多个结果返回集(如不同参数返回不同类型结果集)
存储过程实例
CREATE PROCEDURE VariableResultShapes(@shape int)ASif(@shape = 1) select CustomerID, ContactTitle, CompanyName from customerselse if(@shape = 2) select OrderID, ShipName from orders
C# 存储过程代码
[Function(Name="dbo.VariableResultShapes")] [ResultType(typeof(VariableResultShapesResult1))] [ResultType(typeof(VariableResultShapesResult2))] public IMultipleResults VariableResultShapes([Parameter(DbType="Int")] System.Nullable shape) { IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), shape); return ((IMultipleResults)(result.ReturnValue)); }
存储过程调用
IMultipleResults result = db.VariableResultShapes(1);// Iterate through the list and write results (the company names)// to the console.foreach(VariableResultShapesResult1 compName in result.GetResult()){ Console.WriteLine(compName.CompanyName);}// Pause to view company names; press Enter to continue.Console.ReadLine();// Assign the results of the procedure with an argument// of (2) to local variable 'result'.IMultipleResults result2 = db.VariableResultShapes(2);// Iterate through the list and write results (the order IDs)// to the console.foreach (VariableResultShapesResult2 ord in result2.GetResult ()){ Console.WriteLine(ord.OrderID);}
最后说一句:其实就是很不要脸的把msdn上的东西拿过来了
参考: