我使用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 };
答案 0 :(得分:12)
var query = (from x in context.MyEntity where x... select x);
(query as ObjectQuery<MyEntity>).ToTraceString();
这将打印到跟踪日志...如果您想要一个简单的跟踪查看器(在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());
答案 1 :(得分:4)
您可以使用SQL Server Profiler。 LinqPad,我确定还有其他工具
答案 2 :(得分:1)
答案 3 :(得分:1)
您正在使用VS10,并且有一个名为Intellitrace的工具。