9

Basically, this question with a difference...

Is it possible to capture print output from a TSQL stored procedure in .NET, using the Entity Framework?

The solution in the other question doesn't work for me. It works with the connection type from System.Data.SqlClient but I'm using the one from System.Data.EntityClient which does not have an InfoMessage event. (Of course, I could just create an SQL connection based on the Entity connection settings, but prefer to do it directly.)

4 Answers 4

12

Actually, it does, but since the EF is not SQL Server specific, you have to cast it:

var sqlConn = (SqlConnection)Context.Connection.StoreConnection;
1
  • 1
    GREAT! Although I had to do a double typecast. From DbConnection via EntityConnection to SqlConnection. Commented Mar 8, 2010 at 15:35
9

Just to show people a complete working example from Craig's answer and Wim's response:

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

​S​t​e​ve​​​​​​

1

This is what worked for me, samneric's example was helpful but not the exact syntax.

string message = Empty.string;

using (var context1 = new DatabaseEntities())
            {
                var conn =
                ((EntityConnection)
                    ((IObjectContextAdapter)context1).ObjectContext.Connection);

                var sqlConnection = (SqlConnection)conn.StoreConnection;

                sqlConnection.InfoMessage += (s, a) => message = a.Message;

              data = context1.storedProc("Parameter");


            }
0

Based on the answer from @samneric, but with some modifications for EF Core we used this to allow debugging of a wayward stored procedure;

    DbConnection connection = Database.GetDbConnection();
    var sqlConnection = connection as SqlConnection;
    sqlConnection.InfoMessage += (s, a) => System.Diagnostics.Debug.WriteLine(a.Message);

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.