dbcontext 上下文池,提高性能测试
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-08-02 17:03:23 +08:00
parent e1038c27f6
commit c353ae645b
5 changed files with 75 additions and 30 deletions
@@ -24,33 +24,38 @@ using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Core.Infra.EFCore
{
public class IRaCISDBScopedFactory : IDbContextFactory<IRaCISDBContext>
{
private readonly IDbContextFactory<IRaCISDBContext> _pooledFactory;
private readonly IUserInfo _userInfo;
public IRaCISDBScopedFactory(IDbContextFactory<IRaCISDBContext> pooledFactory,IUserInfo userInfo)
{
_pooledFactory = pooledFactory;
_userInfo = userInfo;
}
public IRaCISDBContext CreateDbContext()
{
var context = _pooledFactory.CreateDbContext();
context._userInfo = _userInfo;
return context;
}
}
public class IRaCISDBContext : DbContext
{
public readonly IUserInfo _userInfo;
public IUserInfo _userInfo;
public readonly ILogger<IRaCISDBContext> _logger;
// 在控制台
//public static readonly ILoggerFactory MyLoggerFactory = LoggerFactory.Create(builder => { builder.AddConsole(); });
// 调试窗口
public static readonly ILoggerFactory MyLoggerFactory = LoggerFactory.Create(builder => { builder.AddDebug(); });
public IRaCISDBContext(DbContextOptions<IRaCISDBContext> options, IUserInfo userInfo, ILogger<IRaCISDBContext> logger
public IRaCISDBContext(DbContextOptions<IRaCISDBContext> options, ILogger<IRaCISDBContext> logger
) : base(options)
{
_logger= logger;
_userInfo = userInfo;
}
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseLoggerFactory(MyLoggerFactory);
optionsBuilder.UseExceptionProcessor();
}