谁知道vs2010中的linq如何查看生成的sql语句
如题
------解决方案--------------------使用Linq时查看生成的sql语句 linq使用对象的方式来操作数据库。最后根本的还是生成原始的sql。但是对象的方式掩盖了很多原本的sql面貌可能会是我们不明白对应的sql是什么。还好linq可以输出sql语句 &<60;&<60;&<60;&<60;
DataClassesDataContext dc = new DataClassesDataContext();
这个对象提供的日志功能。就是输出对应的sql语句。在控制台应用程序下。使用dc.console(有误)可以直接输出显示对应的sql语句。
在windonw和web程序下面可以建立一个txt文件日志。把生成的sql记录下来。代码比较简单了
DataClassesDataContext dc = new DataClassesDataContext();
StreamWriter sw = new StreamWriter(Server.MapPath("sqlLog.txt"), true); // Append
dc.Log = sw;
//然后是linq的相关数据操作
sw.Flush();
sw.Close();
就这样对应的sql语句就记录到sqlLog.txt文件中了。
我们可能会发现生成的sql在我们意料之外。呵呵。我的感觉是这样
------解决方案--------------------查看LINQ生成SQL语句的几种方法
http://hi.baidu.com/king%B3%CC%D0%F2%C8%CB%C9%FA/blog/item/9d2696f03c9e05ca7831aa79.html
------解决方案--------------------学习了!!帮顶!!
------解决方案--------------------
------解决方案--------------------单步调试就看到了
------解决方案--------------------LINQ to SQL 和 Entity Framework 都能看得到生成的 ESQL ,帮助文档中都有,好像是什么 Command 属性,要查一下文档才知道。
不过,最方便、最直接、最终的还是对SQL Server进行跟踪,在 SQL Server管理器的“工具-->SQL Server Profiler”中。
------解决方案--------------------今天为了看一个语句的TSQL,弄得恼火。
------解决方案--------------------顶了顶了顶了顶了顶了顶了
------解决方案--------------------linq中有方法的例如
DataContext context = new DataContext(connectionString);
Table<OrderDetail> details = context.GetTable<OrderDetail>();
context.GetCommand(details).CommandText //获得生成的sql 语句
------解决方案--------------------加个日志 呵呵
------解决方案--------------------mark!