2010-03-08 49 views
6

基本上,this question有區別...捕獲存儲過程的打印輸出(不同型號!)

是否有可能捕獲.NET中TSQL存儲過程的打印輸出,使用實體框架?

另一個問題的解決方案不適合我。它可以與System.Data.SqlClient的連接類型一起使用,但是我使用System.Data.EntityClient中的一個,它沒有InfoMessage事件。 (當然,我可以創建基於實體連接設置的SQL連接,但更願意直接執行此操作。)

回答

10

實際上,它確實,但由於EF不是特定於SQL Server的,所以必須將其:

var sqlConn = (SqlConnection)Context.Connection.StoreConnection; 
+1

GREAT!雖然我不得不做一個雙重的類型轉換。從DbConnection通過EntityConnection到SqlConnection。 – 2010-03-08 15:35:52

8

只是向人們展示了從克雷格回答一個完整的工作示例和維姆迴應:

var entityConnection = (EntityConnection)Context.Connection; 
var sqlConnection = (SqlConnection)entityConnecion.StoreConnection; 
sqlConnection.InfoMessage += (s,a) => Debug.WriteLine(a.Message); 

史蒂夫