如何找出此语句生成的实际SQL?

Sco*_*eam 4 c# sql-server entity-framework .net-4.0 visual-studio-2010

我使用的是VS2010,.NET4和EF4.我希望看到运行它时生成的实际SQL.另外,这是写这个陈述的最佳方式是什么?

这是我的代码:

var cklContactItems = from a in dbTestCenterViews.appvuChecklistExports
                                   where a.MarketChecklistID == MCLID 
                                        && a.checklistSectionID == SID 
                                        && a.fieldGroupOrder != null
                                   orderby a.fieldGroupOrder ascending
                                   select new { a.Column1, a.Column2, a.Column3, a.Column4, a.Column5,a.Column1FieldID,a.Column2FieldID,a.Column3FieldID,a.Column4FieldID,a.Column5FieldID,a.fieldGroupOrderLabel };
Run Code Online (Sandbox Code Playgroud)

Nix*_*Nix 12

var query = (from x in context.MyEntity where x... select x);

(query as ObjectQuery<MyEntity>).ToTraceString();
Run Code Online (Sandbox Code Playgroud)

这将打印到跟踪日志...如果您想要一个简单的跟踪查看器(在Visual Studio之外),请查看DebugView

作为附加说明,我使用/看过的最好的"实时"分析器是Entity Framework Profiler,你必须为此付费,但是有一个试用版可用,它会给你一个与之匹配的SQL代码行.它还承认常见的"问题".安装很简单...你需要添加的是你的应用程序的初始化程序中的一个语句.


**编辑更新以显示如何使用用户代码**

我想我可以为你做所有艰苦的工作......;).因为你使用annoynmous类型只是留下<T>部分.

var cklContactItems = from a in dbTestCenterViews.appvuChecklistExports
                               where a.MarketChecklistID == MCLID 
                                    && a.checklistSectionID == SID 
                                    && a.fieldGroupOrder != null
                               orderby a.fieldGroupOrder ascending
                               select new {
                                   a.Column1, 
                                   a.Column2, 
                                   a.Column3, 
                                   a.Column4,
                                   a.Column5,
                                   a.Column1FieldID,
                                   a.Column2FieldID,
                                   a.Column3FieldID,
                                   a.Column4FieldID,
                                   a.Column5FieldID,
                                   a.fieldGroupOrderLabel 
                                  };

System.Diagnostics.Trace.WriteLine((query as ObjectQuery).ToTraceString());
Run Code Online (Sandbox Code Playgroud)