如果我使用linq to SQL,检测选择n + 1问题的最佳方法是什么,现在我们正在处理一个项目,显示某些列表似乎很慢。 检测此问题的最佳方法是什么?
答案 0 :(得分:4)
也许这会有所帮助:
http://ayende.com/Blog/archive/2009/11/13/linq-to-sql-profiler-is-now-on-public-beta.aspx http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx http://visualstudiogallery.msdn.microsoft.com/ru-ru/d5a64d5a-174a-4357-ad84-dbeeec030f23
或者您可以使用SQL事件探查器,只检查在访问单个列表项时是否执行查询。
答案 1 :(得分:2)
这不会直接检测到n + 1个问题,但是当你查看生成的SQL时,它们很容易被发现。
DataContext.Log属性采用TextWriter,它将输出生成的SQL和一些其他诊断信息。这是一个记录到输出的实现。 Linq to SQL DebuggerWriter。以下是如何使用DebuggerWriter的简单示例。
DataContext db = new DataContext();
#if DEBUG
db.Log = new DebuggerWriter();
#endif