我有以下示例代码:
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 查询?
有什么工具可以做到这一点吗?
The EF 分析器 http://www.hibernatingrhinos.com/products/efprof另一个答案中指定的是一头野兽——非常强大,但这并不是免费的($$、磁盘空间和时间)。它也是由奥伦·埃尼 http://ayende.com/blogNHibernate 和RavenDB http://ravendb.net/ fame.
我喜欢在紧要关头使用的工具非常非常轻量级,当然在功能方面无法与 EF Prof 进行比较 - 但成本(美元、时间和磁盘)是或接近, 零。
我在 LocalDb 上使用 EF 测试了这些轻量级探查器,但它们的主要用例是更传统的 Sql Server 风格(包括 Express)。
ExpressProfiler
到目前为止,最容易使用的一个(也是最简单的-show-me-the-SQL-statements-kthxbye)是CodePlex 上的 ExpressProfiler https://expressprofiler.codeplex.com/.
整个程序是一个 126 KB EXE!现在很轻!
AnjLab Sql 分析器
另一件是来自数据向导 http://www.datawizard.com/,曾经是免费的(显然现在价格为 5 美元起)。
有人设法挽救了GitHub 上的快照 https://github.com/ren85/free-sql-server-profiler(包括 xcopy 可安装的二进制文件)当它是开源的时。
可执行文件将自身呈现为“AnjLab Sql Profiler”,并允许对显示的事件进行一些过滤 - 但这种优势也是它的弱点,因为可以启用/禁用的事件类型太多。如果选择了所有内容,输出将极其冗长。
仅通过选择特定事件可以获得更理智的输出。
以下是我为了获得上述输出而选择的事件:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)