我有以下示例代码:
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 查询?
有什么工具可以做到这一点吗?
最佳答案
EF Profiler在另一个答案中指定的是野兽 - 非常强大,但这不是免费的($$,磁盘空间和时间)。它也是由 Oren Eini 制作的NHibernate 和 RavenDB名气。
我喜欢在紧要关头使用的工具更轻巧,当然在功能方面无法与 EF Prof 相比 - 但成本($$、时间和磁盘)是,或方法, 零。
我在 LocalDb 上使用 EF 测试了这些轻量级分析器,但它们的主要用例是更传统的 Sql Server 风格(包括 Express)。
ExpressProfiler
到目前为止,最容易使用的(也是最简单的-show-me-the-SQL-statements-kthxbye)是 ExpressProfiler on CodePlex .
整个程序是一个 126 KB 的 EXE!现在轻了!
AnjLab Sql 分析器
另一个来自 DataWizard ,以前是免费的(显然现在价格从 5 美元起)。
有人设法保存了 snapshot on GitHub (包括 xcopy-installable 二进制文件),当它是开源的。
可执行文件将自己显示为“AnjLab Sql Profiler”并允许对显示的事件进行一些过滤 - 但这种优势也是它的弱点,因为可以启用/禁用的事件类型太多了。如果选择了所有内容,输出将非常冗长。
仅通过选择特定事件可以获得更合理的输出。
以下是我为获得上述输出而选择的事件:
关于sql - 配置文件 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812256/