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 so
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);
Steve
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");
}
Actually, it does, but since the EF is not SQL Server specific, you have to cast it:
var sqlConn = (SqlConnection)Context.Connection.StoreConnection;
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);