Entity Framework调试是个比较麻烦的事,因为目前它不支持把生成的SQL语句输出到日志或Debug,只能通过SQL Server Profiler来监视SQL执行,不是很方便。顺便提一句,这一点Hibernate就做得比较好。
实际项目上经常利用ObjectQuery的ToTraceString()方法来查看SQL,示例如下:
- using(var ctx = new TestDBEntities)
- {
- var query = ctx.Clients.Where(c => c.Status == 1)
- .OrderBy(c => c.ComputerName);
- //调试输出SQL,注意query不能ToList(),否则就不是IQueryable了
- Debug.WriteLine((query as ObjectQuery).ToTraceString());
- //后续业务逻辑处理数据
- foreach(var client in query)
- {
- //......
- }
- }
这样在调试时就能看到SQL了,同理可输出到日志文件。
原文链接:http://boytnt.blog.51cto.com/966121/977417