asp.net – 如何跟踪Linq-to-sql DataContext上的查询
发布时间:2020-05-24 15:38:36 所属栏目:asp.Net 来源:互联网
导读:在 herding code播客14中,有人提到stackoverflow显示在页面底部的请求期间执行的查询. 这听起来对我来说是个好主意.每次页面加载时我都想知道执行什么sql语句,以及DB往返总数的计数. 有没有人有这个问题的巧妙解决方案? 您认为可接受的查询数量是多少?我在
|
在 herding code播客14中,有人提到stackoverflow显示在页面底部的请求期间执行的查询. 这听起来对我来说是个好主意.每次页面加载时我都想知道执行什么sql语句,以及DB往返总数的计数. 您认为可接受的查询数量是多少?我在想,在开发过程中,如果需要超过30个查询来呈现页面,我可能会让我的应用程序抛出异常. 编辑:我想我一定不能清楚地解释我的问题.在HTTP请求期间,Web应用程序可能会执行十几个或更多sql语句.我希望将这些语句附加到页面底部,以及语句数量的计数. 这是我的解决方案: 我创建了一个DataContext可以写入的TextWriter类: public class Logger : StreamWriter
{
public string Buffer { get; private set; }
public int QueryCounter { get; private set; }
public Logger() : base(new MemoryStream())
{}
public override void Write(string value)
{
Buffer += value + "<br/><br/>";
if (!value.StartsWith("--")) QueryCounter++;
}
public override void WriteLine(string value)
{
Buffer += value + "<br/><br/>";
if (!value.StartsWith("--")) QueryCounter++;
}
}
在DataContext的构造函数中,我设置了记录器: public HeraldDBDataContext()
: base(ConfigurationManager.ConnectionStrings["Herald"].ConnectionString,mappingSource)
{
Log = new Logger();
}
最后,我使用Application_OnEndRequest事件将结果添加到页面底部: protected void Application_OnEndRequest(Object sender,EventArgs e)
{
Logger logger = DataContextFactory.Context.Log as Logger;
Response.Write("Query count : " + logger.QueryCounter);
Response.Write("<br/><br/>");
Response.Write(logger.Buffer);
}
解决方法如果将.ToString()放到var查询变量中,则会得到sql.你可以在Debug en VS2008中使用它. Debug Visualizer例如: var query = from p in db.Table
select p;
MessageBox.SHow(query.ToString()); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC:ValidationAttribu
- asp.net – 如何拒绝用户访问子文件夹和文件?
- asp.net-mvc – 如何在Visual Studio 2017中构建
- 如何在asp.net会员中手动更改密码?
- asp.net – ASP MVC授权所有操作除了几个
- 免费ASP.Net和/或CSS主题
- asp.net-mvc – ASP.NET MVC – 能够处理数组的自
- asp.net – 比较Razor vs ASPX语法
- asp.net-mvc – 为什么Partial View在MVC 5 Visu
- asp.net-mvc – 最初在使用AuthorizeAttribute时
热点阅读
