LINQ TO SQL:如何接收多个结果集

如何我们需要在LINQ TO SQL中调用一个存储过程,它如果会返回多个结果集,这可能会稍微麻烦一点。下面来看一个范例

存储过程:

ALTER PROCEDURE dbo.MultiResultQuery
    /*
    (
    @parameter1 int = 5,
    @parameter2 datatype OUTPUT
    )
    */
AS
    /* SET NOCOUNT ON */
    SELECT * FROM Orders;
    SELECT * FROM Customers;

image

将该存储过程拖拽到LINQ TO SQL的设计器上

image

我们看看设计器帮我们生成了什么方法

image

它生成了一个方法,同时还生成了一个特定的类型:“MultiResultQuery_个结果”

image

这显然不是我们想要的结果。我们当然希望直接通过Customers或者Orders去接收结果。那么怎么办呢?

首先,我们将这个“MultiResultQuery_个结果”删除掉,然后修改一下MultiResultQuery方法

[Function(Name="dbo.MultiResultQuery")]
        [ResultType(typeof(Customers))]
        [ResultType(typeof(Orders))]
        public IMultipleResults MultiResultQuery()
        {
            IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
            return ((IMultipleResults)(result.ReturnValue));
        }

那么,下面来看看如何使用这个存储过程

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {


            NorthwindDataContext db = new NorthwindDataContext();
            db.Log = Console.Out;

            var result = db.MultiResultQuery();

            var orders = result.GetResult
  
  
   
   ();
            var customers = result.GetResult
   
   
    
    ();
            
    
    foreach (var item 
    
    in orders)
            {
                Console.Write(item.OrderID);
            }
            
    
    foreach (var item 
    
    in customers)
            {
                Console.Write(item.CustomerID);
            }
        }


    }
}

   
   
  
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值