Reputation: 26682
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.)
Upvotes: 9
Views: 3766
Reputation: 6354
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);
Upvotes: 0
Reputation: 254
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");
}
Upvotes: 1
Reputation: 3218
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
Upvotes: 9
Reputation: 126587
Actually, it does, but since the EF is not SQL Server specific, you have to cast it:
var sqlConn = (SqlConnection)Context.Connection.StoreConnection;
Upvotes: 12