如何获取DatabaseFacade的Log属性?

Joh*_* Wu 2 c# logging entity-framework-core .net-6.0

当我用谷歌搜索“entityframework”和“logging”时,弹出了这篇文章,并且这里的几个人也提到了同一篇文章。

但是,当我尝试时,我似乎无法获取 Log 属性。我缺少什么?

我的 DbContext 实现(顺便说一句,这是由 Entityframework 自己的脚手架生成的):

internal partial class SharedContext : DbContext
{
    public SharedContext()
    {
    }...
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用的方法: SharedContext context = new();

//I am getting CS1061 (DatabaseFacade does not contain a definition for Log....
context.Database.Log = Console.Write;  
Run Code Online (Sandbox Code Playgroud)

请帮忙。谢谢!

Gur*_*ron 5

您的问题标记为 .NET 6 和 EF Core,而本文提到 EF 6,它是 .NET Framework 的 EF 的上一个版本。您应该查看EF Core 的日志记录文档。例如通过重载方法使用简单的日志记录OnConfiguring

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder.LogTo(Console.WriteLine);
Run Code Online (Sandbox Code Playgroud)

另外,您可能应该考虑通过依赖项注入设置上下文(DbContext Lifetime、Configuration和Initialization):

services.AddDbContext<SharedContext>(opts => opts // or AddDbContextFactory
      .Use{YourDatabaseType}(...)
      .LogTo(Console.WriteLine));
Run Code Online (Sandbox Code Playgroud)