步步为营VS 2008 + .NET 3.5(11) - DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录
作者:webabcd
介绍
以Northwind为示例数据库,DLINQ(LINQ to SQL)之结合GridView控件和ObjectDataSource控件演示大数据量分页,同时介绍延迟执行和日志记录
示例
PagingAndLogging.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="PagingAndLogging.aspx.cs"
Inherits="LINQ_DLINQ_PagingAndLogging" Title="大数据量分页、延迟执行和日志记录" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:GridView ID="gvProduct" runat="server" DataSourceID="odsProduct" AllowPaging="True" PageSize="5">
</asp:GridView>
<asp:ObjectDataSource ID="odsProduct" runat="server" EnablePaging="True" SelectCountMethod="GetProductCount"
SelectMethod="GetProduct" TypeName="PagingAndLogging">
<SelectParameters>
<asp:Parameter Name="startRowIndex" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="maximumRows" Type="Int32" DefaultValue="10" />
</SelectParameters>
</asp:ObjectDataSource>
</asp:Content>
Inherits="LINQ_DLINQ_PagingAndLogging" Title="大数据量分页、延迟执行和日志记录" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:GridView ID="gvProduct" runat="server" DataSourceID="odsProduct" AllowPaging="True" PageSize="5">
</asp:GridView>
<asp:ObjectDataSource ID="odsProduct" runat="server" EnablePaging="True" SelectCountMethod="GetProductCount"
SelectMethod="GetProduct" TypeName="PagingAndLogging">
<SelectParameters>
<asp:Parameter Name="startRowIndex" Type="Int32" DefaultValue="0" />
<asp:Parameter Name="maximumRows" Type="Int32" DefaultValue="10" />
</SelectParameters>
</asp:ObjectDataSource>
</asp:Content>
PagingAndLogging.cs
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
/// <summary>
/// PagingAndLogging 的摘要说明
/// </summary>
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
![](http://blog.51cto.com/images/editer/InBlock.gif)
通过查看日志可以发现,单击第1页时DLINQ生成的T-SQL语句如下
SELECT TOP 5 [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
FROM [dbo].[Products] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
SELECT COUNT(*) AS [value]
FROM [dbo].[Products] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
FROM [dbo].[Products] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
SELECT COUNT(*) AS [value]
FROM [dbo].[Products] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
通过查看日志可以发现,单击第10页时DLINQ生成的T-SQL语句如下
SELECT TOP 5 [t1].[ProductID], [t1].[ProductName], [t1].[SupplierID], [t1].[CategoryID], [t1].[QuantityPerUnit], [t1].[UnitPrice], [t1].[UnitsInStock], [t1].[UnitsOnOrder], [t1].[ReorderLevel], [t1].[Discontinued]
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]) AS [ROW_NUMBER], [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
FROM [dbo].[Products] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] > @p0
-- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [45]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
SELECT COUNT(*) AS [value]
FROM [dbo].[Products] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]) AS [ROW_NUMBER], [t0].[ProductID], [t0].[ProductName], [t0].[SupplierID], [t0].[CategoryID], [t0].[QuantityPerUnit], [t0].[UnitPrice], [t0].[UnitsInStock], [t0].[UnitsOnOrder], [t0].[ReorderLevel], [t0].[Discontinued]
FROM [dbo].[Products] AS [t0]
) AS [t1]
WHERE [t1].[ROW_NUMBER] > @p0
-- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [45]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
SELECT COUNT(*) AS [value]
FROM [dbo].[Products] AS [t0]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 3.5.20706.1
OK
[源码下载]
本文出自 “webabcd” 博客,请务必保留此出处http://webabcd.blog.51cto.com/1787395/345013