2011-12-19 62 views
2

在很多網站/博客上,我注意到想要解釋linq機制的人編寫Linq Queries併爲其提供SQL翻譯。我如何爲自己的查詢獲得翻譯? 我在VS2010中使用EF .Net 4.0。有沒有一個地方(財產或甚至一些第三方工具),我可以看到他們被翻譯成什麼?如何知道EF將Linq查詢轉換爲什麼?

+1

不是一個直接的答案,但你應該看看[EFProf](http://efprof.com/)。是的,這是一個商業工具,但人很棒。 (也有自由的方式來完成它,比如SQL Profiler) – vcsjones 2011-12-19 15:20:09

+0

這正是我一直在尋找的!謝謝,它完美的工作,我很滿意30天的試用:) – user1086396 2011-12-19 16:57:46

回答

4

最簡單的方法是使用SQL事件探查器。在調試時我發現這是一個真正的上帝派。

+0

謝謝,這是我一直在尋找,但我只有MSSQL的Express版本,所以我將不得不玩一些更高級的版本安裝程序腳本來獲取分析器,所以我現在只需要通過,因爲我很匆忙。 – user1086396 2011-12-19 16:56:54

5

可以使用ObjectQuery.ToTraceString方法:

var query = ... 
string sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString(); 

但是,這種方法的一些不足之處是,它只會顯示的查詢,而不是更新/插入/刪除。而且,它不會顯示使用的參數。

如果您需要儘可能詳細的查詢,請使用SQL Server Profiler作爲Neil suggested

Julie Lerman在MSDN上有不同的選項:Profiling Database Activity in the Entity Framework。她提到:

+0

是的,這是非常有限的,不允許翻譯我想要的很多查詢,謝謝:) – user1086396 2011-12-19 16:55:34

0

您可以使用LinqPad,你可以查詢你的實體模型,並查看生成的SQL。