是否有可能在全局级别而不是逐个查询的基础上输出 Entity Framework 生成的 SQL?我想将其全部转储到某个地方以便查看。
如果不可能,我该如何查看正在生成的更新和插入的 SQL?
是否有可能在全局级别而不是逐个查询的基础上输出 Entity Framework 生成的 SQL?我想将其全部转储到某个地方以便查看。
如果不可能,我该如何查看正在生成的更新和插入的 SQL?
SQL Server Profiler可以让您在应用程序运行时查看服务器上执行的命令。
另一个免费的 SQL Server 2005 Express 剖析工具在此。
查看由LINQ生成的内容的另一种方法是使用DataContext的Log属性。
它是一个TextWriter,应该很容易将其内容保存到文件或重定向到Console.Out。
自从最初提出这个问题以来,现在您还可以使用EFProf来对您的Entity Framework应用程序进行分析,这将允许您查看生成的SQL以及许多其他指标。
我也在寻找这个答案。事实证明,如果你不介意涉足反射的世界,有一种相当巧妙的方法可以查看EF生成的SQL。
MSDN论坛上一个非常有资源的帖子作者编写了一组扩展方法,让你可以转储ObjectContext
的SQL输出(即在调用SaveChanges()
时将执行的内容)。
你可以在这里找到链接——查找包含CustomExtensions类的g_yordanov的帖子。
我在过去的一段时间里一直在测试它,似乎非常好用。唯一的问题是,我必须按照David Cater在那个线程中建议的修复方法——将Dictionary<long, object>
更改为Dictionary<int, object>
。