自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談如何在ASP.NET中了解LINQ語(yǔ)句性能

開(kāi)發(fā) 后端
作者最近在使用Linq To SQL的時(shí)候,為了了解不同Linq語(yǔ)句對(duì)性能造成的不同影響,需要獲得Linq To SQL生成的SQL語(yǔ)句。為了實(shí)現(xiàn)這一功能,作者創(chuàng)建了一些小工具,供大家使用。

如果是在桌面程序中,只需要

_context.Log = Console.Out;

即可在控制臺(tái)輸出SQL語(yǔ)句??墒窃贏SP.NET中又該怎么辦呢?

這時(shí)我想起了StringWriter。用它就可以代替Console.Out幫我們接收輸出的日志,保存在一個(gè)StringBuilder里。

于是構(gòu)造一個(gè)輔助類(lèi):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Text;

namespace Clowwindy.Models
{
    public static class LogHelper
    {
        public static StringBuilder Log = new StringBuilder();
        public static TextWriter In = new StringWriter(Log);
        public static string GetAllLog()
        {
            In.Flush();
            return Log.ToString();
        }
        public static void Clean()
        {
            Log = new StringBuilder();
            In = new StringWriter(Log);
        }
    }
}

  再添加一個(gè)頁(yè)面log.aspx,用來(lái)顯示日志:

<%@ Page Language="C#" AutoEventWireup="true" 
CodeBehind="Log.aspx.cs" Inherits="Clowwindy.Log" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>SQL Log</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:Button ID="btn_Clean" runat="server" Text="清空" 
        onclick="btn_Clean_Click"/>
    <div>
        <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Clowwindy.Models;

namespace Clowwindy
{
    public partial class Log : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.UserHostAddress != "127.0.0.1")
            {
                Response.End();
                return;
            }
            Literal1.Text = LogHelper.GetAllLog().Replace("\n","\n<br/>");
        }

        protected void btn_Clean_Click(object sender, EventArgs e)
        {
            LogHelper.Clean();
            Literal1.Text = null;
        }
    }
}

 ***在所有new DataContext的地方加上_context.Log = LogHelper.In:

        public Repository()
        {
            _context = new TDataContext();
            _context.Log = LogHelper.In;
        }

打開(kāi)log.aspx,即可看到之前執(zhí)行的SQL語(yǔ)句。

【編輯推薦】

  1. LINQ橫向?qū)Ρ萬(wàn)oreach方法
  2. 手把手教你用好LINQ to SQL
  3. 使用LINQ和ADO.NET創(chuàng)建Silverlight程序
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

2009-09-10 14:02:08

LINQ ASP.NE

2009-07-24 10:52:42

ASP.NET ISA

2009-07-22 16:11:43

ASP.NET AJA

2009-07-20 15:30:11

ASP.NET應(yīng)用

2011-10-14 10:37:54

ASP.NET

2009-08-05 15:29:33

ASP.NET For

2009-07-23 15:44:39

ASP.NET MVC

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-22 13:24:24

ASP.NET MVC

2009-07-28 16:03:23

ASP.NET狀態(tài)服務(wù)

2009-08-10 10:19:47

ASP.NET組件設(shè)計(jì)

2009-07-20 17:12:17

ASP.NET訪問(wèn)數(shù)據(jù)

2009-07-23 15:24:37

ASP.NET Ima

2011-08-23 10:58:59

2009-07-21 14:16:02

ASP.NET管道優(yōu)化

2009-07-27 16:19:59

ASP.NET報(bào)表控件

2009-08-05 11:00:46

獲得RowIndexASP.NET

2009-07-28 17:34:28

ASP.NET XML

2009-07-28 18:00:11

ASP.NET程序

2009-07-21 15:02:19

ASP.NET應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)