2014-01-21 70 views
2

如何獲取由Context.SaveChanges()生成的sql查詢;命令。我需要這個,因爲用戶可以選擇爲數據分發創建一個腳本,而不是插入到本地基礎中。實體框架腳本生成

謝謝。

更新:

我在WCF數據服務中使用實體框架。

+0

如果是查詢單個或少數幾個,你可以看到(及複印件)SQL Server Profiler中(www.codeproject.com/Articles/21371/SQL-Server-Profiler-Step-by-正在運行的精確查詢步)。如果你的意思是即時生成腳本,那麼我不確定。 – HockeyJ

+0

我正在使用實體框架,生成的SQL非常複雜,我相信我會保持。 – Mortalzera

+0

你能不能給他們提供一個非常簡單的軟件來接收數據(可能是CSV或者他們想要的)並使用標準接口。我不希望人們直接在數據庫上運行復雜的SQL腳本。 – HockeyJ

回答

0

我的解決辦法是:不要使用WCF數據服務,這仍然是不完整,如果你需要的安全性和可靠性,使用WCF服務,這樣你就可以在自己的範圍內有實體框架。 Wcf數據服務還不夠成熟。

對於腳本,IAM使用字符串連接StringBuilder的使用。

1

如果您正在使用EF6,您可以使用DbContext.Database.Log。例如,使用下面的SQL將被輸出到一起的一些性能數據控制檯:

Context.Database.Log = Console.WriteLine; 

你也可以在你想從實際保存更改停止DbContext.SaveChanges情況下進行攔截。

您可以找到有關這兩個記錄和攔截在this MSDN article信息。

如果您使用的是以前的版本中,可以檢查出任何thisthis文章。

+0

這可以完成,但我使用的WCF數據服務非常有限。現在,我正在用stringbuilder創建sql腳本...是的,不是最好的解決方案。 – Mortalzera

+0

順便說一下,生成的查詢非常複雜,幾乎不可能維護。 – Mortalzera