【发布时间】:2023-01-03 01:51:52
【问题描述】:
我创建了一个记录到数据库的自定义记录器。我面临的问题是,当我运行迁移时,AppDbContext 和 MyLoggerProvider 服务之间存在冲突。问题似乎是由以下事实引起的:MyLoggerProvider 是单例服务,而 AppDbContext 服务是作用域服务。
如何解决此问题才能成功运行我的迁移?
Program.cs:
builder.Services.AddDbContext<AppDbContext>(options =>
{
options.UseSqlite(builder.Configuration.GetConnectionString("AppDbConnection"));
});
builder.Services.AddLogging();
builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
MyLoggerProvider.cs:
public class MyLoggerProvider : ILoggerProvider
{
private readonly AppDbContext dbContext;
private readonly LogLevel minLevel = LogLevel.Information;
public MyLoggerProvider(AppDbContext dbContext)
{
this.dbContext = dbContext;
}
public ILogger CreateLogger(string categoryName)
{
return new MyLogger(minLevel, dbContext);
}
// rest of the code
}
MyLogger.cs:
public class MyLogger : ILogger
{
private readonly AppDbContext dbContext;
private readonly LogLevel minLevel;
public MyLogger(LogLevel minLevel, AppDbContext dbContext)
{
this.minLevel = minLevel;
this.dbContext = dbContext;
}
// rest of the code
}
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-core