【问题标题】:Profile EntityFramework配置文件实体框架
【发布时间】:2012-11-28 12:48:33
【问题描述】:

我有以下示例代码:

  Context context = new Context();
  Repository repository = new Repository(context);

  Post post = repository.First<Post>(x => x.Id == 1);

  Model model = new Model {
    Created = cube.Created,
    Id = cube.Id,
    Name = cube.Name,
    Pack = cube.Pack.Id,
    Mimes = context.Files.Where(x => x.Id == 1).Select(x => x.Mime).ToList()
  };

我需要找出哪些 SQL 查询正在发送到数据库。

如何使用 SQL Express 和 VS 2012 分析 EF 查询?

有这方面的工具吗?

【问题讨论】:

    标签: sql entity-framework


    【解决方案1】:

    另一个答案中指定的EF Profiler 是一个野兽——非常强大,但这并不是免费的($$、磁盘空间和时间)。它也是由 NHibernate 的 Oren EiniRavenDB 成名制作的。

    我喜欢在紧要关头使用的工具是重量更轻的方式,当然在功能方面无法与 EF Prof 相比 - 但成本($$、时间和磁盘)是,或接近于零。

    我在 LocalDb 上使用 EF 测试了这些轻量级分析器,但它们的主要用例是更传统的 Sql Server 风格(包括 Express)。

    ExpressProfiler

    到目前为止,最容易使用的一个(也是最简单的-show-me-the-SQL-statements-kthxbye)是ExpressProfiler on CodePlex

    整个程序是一个 126 KB 的 EXE!现在它很轻量级!

    AnjLab Sql Profiler

    另一个是来自DataWizard 的那个,它曾经是免费的(显然现在价格从 5 美元起)。

    当它是开源的时候,有人设法保存了 snapshot on GitHub(包括 xcopy-installable 二进制文件)。

    可执行文件将自己显示为“AnjLab Sql Profiler”,并允许对显示的事件进行一些过滤 - 但这种优势也是它的弱点,因为可以启用/禁用的事件类型太多了。如果选择了所有内容,则输出非常冗长。

    只有选择特定事件才能获得更准确的输出。

    为了获得上述输出,我选择了以下事件:

    【讨论】:

    • 我不知道您可以在技术讨论中使用 kthxbye,但您可以使用。编辑:我喜欢它!从现在开始,我将在任何地方使用它。再见!
    【解决方案2】:

    这里有几个选项。

    1. 通过在运行时使用((ObjectQuery)query).ToTraceString() 打印查询来检查查询,请参阅https://stackoverflow.com/a/7901917/1070291(我认为这仅适用于查询,因此在上述情况下可能不是最好的)
    2. 使用管理工作室内置的 SQL Profiler
    3. 使用Entity Framework Profiler(一个非常好的第三方工具,有试用版,这是我用来分析查询的)

    【讨论】:

      猜你喜欢
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多