这样语句,如何查看到实际运行的sql?
db.Tickets.Include("UserInfo").Include("TicketDetails").SingleOrDefault(o => o.TicketId == id);
有没有不用插件的方法,.net自带的?我想写到日志里调试。
@红尘中迷茫: .net没有自带 要不就只能在sql server管理器中查看监视器,里面有所有数据库操作产生的sql语句
SQL server 里面有监视器 sql server profiler
可以看到执行的SQL
放在虚拟主机里的程序,没那个权限。。
两种方式:
1、Sql自带工具-SqlProfiler
2、LinqPad
ObjectQuery.ToTraceString
我是这样做的,楼主可以参考:
首先是一个辅助类
1 /// <summary> 2 /// Linq查询语句输出辅助类 3 /// </summary> 4 public class LogHelper 5 { 6 public static StringBuilder Log = new StringBuilder(); 7 public static TextWriter In = new StringWriter(Log); 8 9 public static string GetAllLog() 10 { 11 In.Flush(); 12 return Log.ToString(); 13 } 14 15 public static void Clean() 16 { 17 Log = new StringBuilder(); 18 In = new StringWriter(Log); 19 } 20 21 }
这个辅助类是这样用的:
1 var db = new DataContext();//linq to sql 数据上下文 2 db.Log = LogHelper.In;//使用辅助类 3 var data = db.Table1.Where(c =>c.Id==1662).FirstOrDefault(); 4 var sql= LogHelper.GetAllLog();//得到实际运行的sql语句
完毕。