当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET中显示Linq To SQL输出的SQL语句

ASP.NET
从ASP.NET的PHP执行速度比较谈起
基于ASP.NET2.0的非HttpModule山寨版MVC框架的实现
ASP.NET 中公有的六种验证控件
无废话C#设计模式之八:Facade
C# 中的 @ 符号的使用及注意事项
保护你的.Net代码:谁动了我的组件?
VS2008与.NET 3.5的JS智能感知和调试
关于 .Net 开发下的分布式缓存设计
在C#3.0中使用扩展方法来扩展接口
C#实现Windows 服务的制作安装和删除
C#3.0中实现隐式类型变量、匿名类型的方法
C#代码与javaScript函数的相互调用
构建 ASP.NET AJAX 开发环境
Windows 窗体的.Net 框架绘图技术
.NET 开发中的一些小技巧集锦
ASP.NET 2.0 创建母版页引来的麻烦
.NET Compact Framework 概述
.NET Compact Framework 2.0 SP1新增功能
专家访谈:从Web 2.0到Web 3.0
.Net里漂浮窗口拖动的实现方法

ASP.NET中显示Linq To SQL输出的SQL语句


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 220 ::
收藏到网摘: n/a

最近在使用Linq To SQL的时候,为了了解不同Linq语句对性能造成的不同影响,需要获得Linq To SQL生成的SQL语句。

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

_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,用来显示日志:

onclick="btn_Clean_Click"/>

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

}


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语句。