位置:海鸟网 > IT > ASP.NET >

在ASP.NET中了解LINQ语句性能

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

_context.Log = Console.Out;

 即可在控制台输出SQL语句。可是在ASP.NET中又该怎么办呢?

 这时我想起了StringWriter。用它就可以代替Console.Out帮我们接收输出的日志,保存在一个StringBuilder里。

 于是构造一个辅助类:

 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);

 }

 }

 }

 再添加一个页面log.aspx,用来显示日志:

 <%@ Page Language="C#" AutoEventWireup="true"

 CodeBehind="Log.aspx.cs" Inherits="Clowwindy.Log" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

 "">

 <html xmlns="" >

 <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;

 }

 打开log.aspx,即可看到之前执行的SQL语句。