Come registrare le query utilizzando Entity Framework 7?

entity-framework entity-framework-core

Domanda

Sto usando Entity Framework 7 sul canale nightly build (in questo momento sto usando la versione EntityFramework.7.0.0-beta2-11524) e sto cercando di registrare le query che EF genera solo per curiosità.

Sto scrivendo un semplice programma di console, ho provato a utilizzare la stessa tecnica di registrazione utilizzata da EF6, ma DbContext.Database.Log non è disponibile su Entity Framework 7. C'è un modo per accedere o dare un'occhiata all'SQL generato da EF7?

Risposta accettata

Per quelli che usano EF7, nessuno dei precedenti ha funzionato per me. Ma è così che ho funzionato. (dal commento di @avi cherry)

Nel tuo Startup.cs hai abilmente un metodo Configura con un sacco di configurazioni in esso. Dovrebbe apparire come sotto (oltre alle tue cose).

    public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
    {
        //this is the magic line
        loggerFactory.AddDebug(LogLevel.Debug); // formerly LogLevel.Verbose

        //your other stuff

    }

Risposta popolare

È possibile accedere alla console utilizzando questo codice, sono sicuro che verrà inserito in un api più semplice in seguito:

using System;
using Microsoft.Data.Entity.Infrastructure;
using Microsoft.Data.Entity.Utilities;
using Microsoft.Framework.Logging;

public static class SqlCeDbContextExtensions
{
    public static void LogToConsole(this DbContext context)
    {
        var loggerFactory = ((IAccessor<IServiceProvider>)context).GetService<ILoggerFactory>();
        loggerFactory.AddProvider(new DbLoggerProvider());
    }
}

E DbLoggerProvider è implementato qui: https://github.com/ErikEJ/EntityFramework7.SqlServerCompact/tree/master/src/Provider40/Extensions/Logging




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché