2010-03-08 54 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); 

史蒂夫