代码之家  ›  专栏  ›  技术社区  ›  Scott and the Dev Team

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

  •  4
  • Scott and the Dev Team  · 技术社区  · 14 年前

    我正在使用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 };
    
    4 回复  |  直到 14 年前
        1
  •  12
  •   Nix    14 年前
    var query = (from x in context.MyEntity where x... select x);
    
    (query as ObjectQuery<MyEntity>).ToTraceString();
    

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

    Entity Framework Profiler ,您必须为此付费,但有一个试用版可用,它将为您提供与代码行匹配的SQL。它也能识别出常见的“问题”。设置很简单。。。您只需在应用程序的初始值设定项中添加一个语句。


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

    <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());
    
        2
  •  4
  •   John Hartsock    14 年前

    SQL Server Profiler . LinqPad ,我确信还有其他工具

        3
  •  1
  •   Mitch Wheat    14 年前
        4
  •  1
  •   Serkan Hekimoglu    14 年前