如何将 ILogger 注入 EFCore DbContext

mas*_*her 5 c# dependency-injection entity-framework-core

我有带有 EFCore 数据库上下文的 .net core 应用程序:

public class MyappDbContext : DbContext
{
    private ILogger<MyappDbContext> _logger;

    public MyappDbContext(DbContextOptions<MyappDbContext> options)
        : base(options)
    {
        // ???
    }
}
Run Code Online (Sandbox Code Playgroud)

在启动类中我注册了上下文:

services.AddDbContext<MyappDbContext>(options => options.UseSqlServer(connectionString));
Run Code Online (Sandbox Code Playgroud)

如何注入MyappDbContext, ILoggeror ILoggerFactory(创建记录器)?

Dav*_*idG 8

您需要做的就是向上下文构造函数添加一个ILoggerFactoryor参数:ILogger

public class MyappDbContext : DbContext
{
    private readonly ILogger<MyappDbContext> _logger;

    public MyappDbContext(DbContextOptions<MyappDbContext> options,
        ILogger<MyappDbContext> logger)
        : base(options)
    {
        _logger = logger;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不过,您应该确定,您还有一个空的构造函数可供 EF 数据库迁移工作。 (3认同)