Est-il possible d'utiliser un profileur SQL pour nmemory (une base de données en mémoire)


Question

J'utilise Entity Framework avec Effort qui utilise NMemory pour tester sans avoir d'effets secondaires réels sur la base de données. Est-il possible d'afficher le SQL envoyé à la base de données nmemory?

Edit: Merci à @Gert_Arnold, j'ai consulté DbContext.Database.Log. Malheureusement, ma sortie ressemble à celle ci-dessous. Quelqu'un peut-il commenter cela? Je suppose que je reçois ces entrées nulles au lieu de mon SQL.

Opened connection at 4/27/2015 11:08:22 AM -05:00
Started transaction at 4/27/2015 11:08:22 AM -05:00
<null>
-- Executing at 4/27/2015 11:08:23 AM -05:00
-- Completed in 132 ms with result: 1

<null>
-- Executing at 4/27/2015 11:08:23 AM -05:00
-- Completed in 5 ms with result: 1

Committed transaction at 4/27/2015 11:08:23 AM -05:00
Closed connection at 4/27/2015 11:08:23 AM -05:00
Disposed transaction at 4/27/2015 11:08:23 AM -05:00
Opened connection at 4/27/2015 11:08:24 AM -05:00
Started transaction at 4/27/2015 11:08:24 AM -05:00
<null>
-- Executing at 4/27/2015 11:08:24 AM -05:00
-- Completed in 8 ms with result: 1

Committed transaction at 4/27/2015 11:08:24 AM -05:00
Closed connection at 4/27/2015 11:08:24 AM -05:00
Disposed transaction at 4/27/2015 11:08:24 AM -05:00

Réponse populaire

Vous pouvez intercepter et enregistrer les commandes.

 // Before command is sent tell EF about the new interceptor
 DbInterception.Add(new MyEFDbInterceptor());


// The interceptor class is called by , see the various interface methods
// just a couple shown here.
public class MyEFDbInterceptor: IDbCommandInterceptor   {
  public void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)    {
     Debug.Writeln(command.CommandText );
     //Debug.Writeln(interceptionContext.Result ); // might be interesting use
}

 public void ReaderExecuted(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext)
{
  Debug.Writeln(command.CommandText );

}

 }




Sous licence: CC-BY-SA
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi