[代码]如何使用为顺序结果形状映射的存储过程(LINQ to SQL)

有时存储过程会连续的返回多个结果形状,比如下面的存储过程:
CREATE PROCEDURE MultipleResultTypesSequentially AS SELECT * FROM Products SELECT * FROM Customers
此时就会返回产品结果和客户结果,而且是按着顺序返回的。
此代码示范的就是如何将这种存储过映射到函数,并且调用此函数访问数据。

映射函数的定义如下,基本上没什么特别之处。
[Function(Name = "MultipleResultTypesSequentially")] [ResultType(typeof(Customer))] [ResultType(typeof(Product))] public IMultipleResults MultipleResultTypesSequentially() { IExecuteResult Result = this.ExecuteMethodCall(this, (MethodInfo)MethodInfo.GetCurrentMethod()); return (IMultipleResults)Result.ReturnValue; }
使用类似如下的代码来调用映射函数:
NorthwindDataContext db = new NorthwindDataContext(@"C:/LINQ/Northwind.mdf"); IMultipleResults Results = db.MultipleResultTypesSequentially(); Console.WriteLine("Product details:"); foreach (var ProductObject in Results.GetResult<Product>()) { Console.WriteLine("ProductID={0} ProductName={1}", ProductObject.ProductID, ProductObject.ProductName); Thread.Sleep(50); } Console.WriteLine(); Console.WriteLine("Customer Details:"); foreach (var CustomerObject in Results.GetResult<Customer>()) { Console.WriteLine("CustomerID={0} ContactTitle={1}", CustomerObject.CustomerID, CustomerObject.ContactTitle); Thread.Sleep(50); }
从上面的代码可以发现多次调用IMultipleResults.GetResult<TElement>()方法。
基本上存储过程返回多少个结果形状,就会调用几次这个方法。
需要强调的是:应该按顺序来获取相关数据。
比如这个示例中,就应该先获取产品数据,然后才是客户数据。否则,可能会引发异常。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值