Gibt es eine Möglichkeit, einen Sql-Profiler für Nmemory (eine In-Memory-Datenbank) zu verwenden


Frage

Ich benutze Entity Framework mit Effort, das NMemory verwendet, um zu testen, ohne tatsächliche Datenbank-Nebenwirkungen zu haben. Gibt es eine Möglichkeit, die sql anzuzeigen, die an die nmemory-Datenbank gesendet wird?

Edit: Dank @Gert_Arnold habe ich in DbContext.Database.Log gesucht. Leider sieht meine Ausgabe wie folgt aus. Kann jemand dazu etwas sagen? Ich gehe davon aus, dass ich diese Null-Einträge anstelle von meinem SQL bekomme.

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

Beliebte Antwort

Sie können die Befehle abfangen und protokollieren.

 // 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 );

}

 }




Lizenziert unter: CC-BY-SA
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum