2011-05-29 83 views
18

我使用实体框架代码首先,我想能够记录所有通过的DbContext生成的SQL查询。在Linq to sql中有一个数据库日志,我似乎无法在EF中找到它。然后,我可以将它们放在日志中或输出到页面。跟踪SQL查询在EF代码第一次

我使用的EntityFramework大会的4.1.0.0版本。

+0

不EF允许你传递一个连接(而不是一个字符串)?我知道的方式,如果你能 – 2011-05-29 15:33:40

+0

(把在背景下,我们在所有的计算器代码,这样做跟踪,我们不使用.LOG)你使用挂接日志自定义连接实现 – 2011-05-29 15:41:01

+0

马克? – 2011-05-29 16:24:33

回答

6

您最好的选择是使用Entity Framework Profiler,虽然它的不幸不是免费的。

您也可以通过在IQueryable本身上运行ToString()手动获取它将生成的SQL,但这必须在每个查询的基础上完成。

最后一个选择是,如果您使用MS Sql Server作为您的后端,您可以加载Sql Server Profiler(我相信它附带的Sql Server Management Studio)并从那里记录sql语句。

+1

如果他决定购买这款探测器,因为创作者(Ayende)今天结婚并在6月1日之前提供29%的折扣,OP很幸运。 http://ayende.com/blog/8193/the-big-event-is-just-a-week-away – Mike 2011-05-29 15:45:46

+0

好吧,我现在可能还得终于购买它。 100美元的折扣有点难以推翻 – KallDrexx 2011-05-29 15:52:31

+1

我了解剖析工具。我想要一个代码解决方案,它可以让我在MVC网页上输出。我不想每个查询都要这样做,我希望上下文中的事件可以让我捕获查询并记录它。 – 2011-05-29 16:22:29

0

有了这样EF工具比以往任何时候都使用SQL Server事件探查器,它应该是用于这种类型的情况的主要工具也变得越来越重要,如果是重要的,当我们实际上写的查询,这是更重要的现在,这些工具建立查询对我们来说,这是一个不仅要进行调试,而且对于优化

+0

有些人使用不支持分析的sql express。 – 2012-09-28 15:43:31

0

Miniprofiler到实体框架探查一个自由选择,让您可以跟踪网络中发生的所有SQL查询请求