从Linq To Entities可视化生成的SQL

时间:2009-07-09 07:59:11

标签: visual-studio linq-to-entities

我正在寻找一种方法来查看我的L2E代码为调试目的而生成的sql是什么。 我读过blogpost by Scott G. on a visualizer for Linq2SQL但我无法让它为L2E工作。

您是否了解从L2E可视化生成的SQL的某种方法?

我使用的是Visual Studio 2008 SP1 Professional。

2 个答案:

答案 0 :(得分:7)

Class ObjectQuery有一个ToTraceString()函数。但是,您在LINQ中编写的大多数查询都是作为IQueryable创建的,因此您首先必须将它们转换为ObjectQuery才能使用它。

或者,如果您定义此扩展方法,则可以将其与IQ

一起使用
public static string ToTraceString<T>(this IQueryable<T> expression)
        {                

            ObjectQuery<T> objectQuery = expression as ObjectQuery<T>;    
            if (objectQuery != null)
            {
                return objectQuery.ToTraceString();
            }
            return "";

        }

...

//then you could use it like this
IQueryable<Record> records = db.Record.Where(r=>r.Value > x);

string generatedQuery = record.ToTraceString();

答案 1 :(得分:1)

尝试使用Sql Server Profile(如果安装了Sql Server)。 打开一个新的Trace窗口,在那里您将看到针对Sql Server发出的所有查询。