簡體   English   中英

使用實體框架 2.2 在 .net core 中啟用 DB 上下文日志記錄

[英]Enable DB context logging in .net core with entity framework 2.2

我有一個使用實體框架 2.2 的 dot net core 2.1 控制台應用程序

我想為 DB 上下文啟用日志記錄以查看查詢執行情況。 使用的數據庫是MySql。 我嘗試了其他鏈接,但我沒有得到其中提供的任何解決方案的結果。 請讓我知道使用實體框架版本 2.2 執行此操作的正確方法

假設您使用的是Pomelo.EntityFrameworkCore.MySql版本2.2.6 (或其他與 EF Core 2.2.6 兼容的提供程序),然后查看以下完全工作的控制台示例應用程序,演示如何使用UseLoggerFactoryLoggerFactoryConsoleLoggerProvider一個過濾器:

using System.Diagnostics;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Console;

namespace IssueConsoleTemplate
{
    public class IceCream
    {
        public int IceCreamId { get; set; }
        public string Name { get; set; }
    }

    public class Context : DbContext
    {
        public DbSet<IceCream> IceCreams { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder
                .UseMySql(
                    "server=127.0.0.1;port=3306;user=root;password=;database=So63898775",
                    b => b.ServerVersion("8.0.20-mysql"))
                .UseLoggerFactory(
                    new LoggerFactory(
                        new[] {new ConsoleLoggerProvider((_, level) => level >= LogLevel.Information, true)}))
                .EnableSensitiveDataLogging()
                .EnableDetailedErrors();
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<IceCream>().HasData(
                new IceCream {IceCreamId = 1, Name = "Vanilla"},
                new IceCream {IceCreamId = 2, Name = "Chocolate"});
        }
    }

    internal static class Program
    {
        private static void Main()
        {
            using (var context = new Context())
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();

                var iceCreams = context.IceCreams.ToList();

                Debug.Assert(iceCreams.Count == 2);
            }
        }
    }
}

它使用以下csproj文件:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
        <Nullable>disable</Nullable>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.2.6"/>
        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.2.6"/>
        <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0"/>
    </ItemGroup>

</Project>

在更高版本中,設置日志記錄的語法已更改。


有關更多信息,請參閱日志記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM