如何使用Entity Framework 7記錄查詢?


我在夜間構建頻道上使用Entity Framework 7(現在我正在使用版本EntityFramework.7.0.0-beta2-11524)並且我試圖僅僅出於好奇而記錄EF生成的查詢。

我正在編寫一個簡單的控制台程序,我嘗試使用 DbContext.Database.Log 相同的日誌記錄技術 ,但DbContext.Database.Log在Entity Framework 7上不可用。有沒有辦法記錄或只是看一下由SQL生成的SQL EF7?

一般承認的答案

對於那些使用EF7的人來說,上述都不適用於我。但這就是我如何運作的方式。 (來自@avi cherry的評論)

在你的Startup.cs中你可以使用一個配置方法,其中包含一堆配置。它應該如下所示(除了你的東西)。

    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
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因