4
我意識到這個類似的問題已經被問了幾次,並且我已經嘗試了這些問題中的建議而沒有成功。如何使用實體框架4.3(代碼優先)和SQL Azure數據庫登錄SQL
我正在使用實體框架(4.3)並針對SQL Azure(在聯合數據庫上)運行。我希望能夠記錄實體框架正在生成的SQL。
我已經使用了Entity Profiler Framework,雖然這在開發過程中很有幫助,但我不確定它在生產過程中會有所幫助。
我無法使用SQL Profiler,因爲這是一個SQL Azure數據庫。
我試過使用EFTracingProvider並按照here中的步驟操作。不幸的是,當我嘗試執行我的第一個命令(使用適當的聯邦)時,我收到一個異常,指出「指定的方法不受支持」。
產生錯誤的代碼如下:
public MyContext(int tenantId)
: base(CreateTracingConnection("TheDb"), true)
{
const string FederationCmdText =
"USE FEDERATION TenantFederation(CustomerId = {0}) WITH RESET, FILTERING=ON";
((IObjectContextAdapter)this).ObjectContext.EnableTracing();
((IObjectContextAdapter)this).ObjectContext.Connection.Open();
// This is the line which throws the exception
this.Database.ExecuteSqlCommand(string.Format(FederationCmdText, tenantId));
}
這裏的例外:
Specified method is not supported.
at EFProviderWrapperToolkit.DbConnectionWrapper.CreateDbCommand()
at System.Data.Common.DbConnection.CreateCommand()
...
因此,這裏是我的問題:
- 是EFTracingProvider爲首選的方法記錄SQL查詢(全局)?
- 如果是這樣,任何想法,爲什麼我得到上述異常?
- 如果沒有,是否有另一種機制可以讓我記錄實體框架生成的所有SQL?
感謝您的幫助, 埃裏克
這似乎是作者推薦的。 [Here](http://efwrappers.codeplex.com/)在他們說的「已知問題」中用'context.Connection.GetStoreConnection()。CreateCommand()'執行存儲命令。所以有效地做你做的,並使用包裝連接:) – slawek 2013-12-16 16:53:30