查看Entity Framework生成的SQL语句

Entity Framework调试是个比较麻烦的事,因为目前它不支持把生成的SQL语句输出到日志或Debug,只能通过SQL Server Profiler来监视SQL执行,不是很方便。顺便提一句,这一点Hibernate就做得比较好。

实际项目上经常利用ObjectQuery的ToTraceString()方法来查看SQL,示例如下:

  
  
  
  
  1. using(var ctx = new TestDBEntities) 

  2.     var query = ctx.Clients.Where(c => c.Status == 1) 

  3.                 .OrderBy(c => c.ComputerName); 

  4. //调试输出SQL,注意query不能ToList(),否则就不是IQueryable了

  5.     Debug.WriteLine((query as ObjectQuery).ToTraceString()); 

  6. //后续业务逻辑处理数据

  7. foreach(var client in query) 

  8.     { 

  9. //......

  10.     } 

这样在调试时就能看到SQL了,同理可输出到日志文件。

 

 

你可能感兴趣的:(framework,entity)