Entity Framework 7을 사용하여 쿼리를 기록하는 방법

entity-framework entity-framework-core

문제

나는 Entity Framework 7을 야간 채널 (현재 EntityFramework 버전 7.0.0-beta2-11524를 사용하고 있습니다)에서 사용하고 있으며 EF가 호기심에서 생성 한 쿼리를 기록하려고합니다.

간단한 콘솔 프로그램을 작성 DbContext.Database.Log EF6에서 사용하는 것과 동일한 로깅 기술 을 사용했지만 Entity Framework 7에서는 DbContext.Database.Log 를 사용할 수 없습니다. 로그를 작성하거나 SQL에서 생성 된 SQL을 들여다 볼 수있는 방법이 있습니까? EF7?

수락 된 답변

EF7을 사용하는 사람들은 나를 위해 일하지 않았습니다. 하지만이게 내가 어떻게 작동하는지 알아. (@avi cherry의 의견에서)

Startup.cs 에는 구성 방법이 여러 개있는 Configure 메서드가 있습니다. 귀하의 물건 이외에 다음과 같이 보일 것입니다.

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

        //your other stuff

    }

인기 답변

이 코드를 사용하여 콘솔에 로그 할 수 있습니다. 나중에 간단한 api로 래핑됩니다.

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());
    }
}

DbLoggerProvider는 여기에서 구현됩니다. https://github.com/ErikEJ/EntityFramework7.SqlServerCompact/tree/master/src/Provider40/Extensions/Logging




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.