代码整理
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2023-12-07 10:55:10 +08:00
parent bd8a8f744c
commit 57d8673bb2
2 changed files with 3 additions and 133 deletions

View File

@ -36,8 +36,6 @@ namespace IRaCIS.Core.Infra.EFCore
public IRaCISDBContext(DbContextOptions<IRaCISDBContext> options, IUserInfo userInfo, ILogger<IRaCISDBContext> logger
//IAuditingData auditingData
) : base(options)
{
_logger= logger;
@ -49,36 +47,12 @@ namespace IRaCIS.Core.Infra.EFCore
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseLoggerFactory(MyLoggerFactory)
.ReplaceService<IModelCacheKeyFactory, DynamicModelCacheKeyFactoryDesignTimeSupport>();
optionsBuilder.UseLoggerFactory(MyLoggerFactory);
optionsBuilder.UseExceptionProcessor();
//var config = new ConfigurationBuilder()
// .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
//connectionString = config.GetSection("ConnectionStrings:RemoteNew").Value;
//optionsBuilder.AddInterceptors(new AuditingInterceptor(connectionString));
}
#region IModelCacheKeyFactory
public class DynamicModelCacheKeyFactoryDesignTimeSupport : IModelCacheKeyFactory
{
public object Create(DbContext context, bool designTime)
=> context is IRaCISDBContext dynamicContext
? (context.GetType(), dynamicContext._userInfo.IsEn_Us, designTime)
: (object)context.GetType();
public object Create(DbContext context)
=> Create(context, false);
}
#endregion
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
@ -89,7 +63,6 @@ namespace IRaCIS.Core.Infra.EFCore
builder.HasNoKey();
});
//modelBuilder.HasDbFunction(typeof(DbContext).GetMethod(nameof(GetTableList)));
modelBuilder.Entity<ReadingQuestionTrial>().HasQueryFilter(p => p.IsAdditional==false);
@ -117,20 +90,10 @@ namespace IRaCIS.Core.Infra.EFCore
modelBuilder.Entity<VisitTask>().HasMany(t => t.TaskInfluenceList).WithOne(s => s.OriginalTask).HasForeignKey(t => t.OriginalTaskId);
modelBuilder.Entity<VisitTask>().HasMany(t => t.GlobalVisitResultList).WithOne(s => s.GlobalVisitTask).HasForeignKey(t => t.GlobalTaskId);
modelBuilder.Entity<VisitTask>().HasMany(t => t.GlobalVisitResultList).WithOne(s => s.GlobalVisitTask).HasForeignKey(t => t.GlobalTaskId);
modelBuilder.Entity<Dictionary>().HasMany(t => t.ChildList).WithOne(t => t.Parent);
modelBuilder.Entity<SubjectUser>().HasMany(t => t.EarlierSubjectUserList).WithOne(t => t.OrignalSubjectUser);
//if (_userInfo.IsEn_Us)
//{
// modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasColumnName(nameof(Domain.Models.Dictionary.Value));
//}
//else
//{
// modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasColumnName(nameof(Domain.Models.Dictionary.ValueCN));
//}
//遍历实体模型手动配置
@ -515,19 +478,6 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TrialEmailBlackUser> TrialEmailBlackUser { get; set; }
#region 废弃
public override int SaveChanges()
{
SetCommonEntityAuditInfo();
AddAudit().GetAwaiter();
return base.SaveChanges();
}
#endregion
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
{
// 采用触发器的方式 设置 CreateUserId CreateTime UpdateTime UpdateUserId 稽查实体里面没有这四个字段的值 因为先后顺序的原因
@ -587,12 +537,7 @@ namespace IRaCIS.Core.Infra.EFCore
throw new DBSaveFailedException("SQL 事务失败,请检查环境。");
}
//catch (Exception ex)
//{
// _logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
// throw new DBSaveFailedException(ex.Message);
//}
}
@ -701,68 +646,6 @@ namespace IRaCIS.Core.Infra.EFCore
}
#region 更新审计信息 废弃
/// <summary>
/// 事件绑定的方式 更新审计信息 废弃
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void UpdateAuitUser(object sender, EntityEntryEventArgs e)
{
if (e.Entry.Entity is IAuditUpdate updateEntity)
{
switch (e.Entry.State)
{
//case EntityState.Deleted:
// entityWithTimestamps.UpdateTime = DateTime.UtcNow;
// Console.WriteLine($"Stamped for delete: {e.Entry.Entity}");
// break;
case EntityState.Modified:
updateEntity.UpdateTime = DateTime.UtcNow;
updateEntity.UpdateUserId = _userInfo.Id;
break;
//添加的时候,更新审计字段也赋值
case EntityState.Added:
updateEntity.UpdateTime = DateTime.UtcNow;
updateEntity.UpdateUserId = _userInfo.Id;
break;
}
}
if (e.Entry.Entity is IAuditAdd addEntity)
{
switch (e.Entry.State)
{
case EntityState.Added:
addEntity.CreateTime = DateTime.UtcNow;
addEntity.CreateUserId = _userInfo.Id;
break;
}
}
if (e.Entry.Entity is IAuditAddWithUserName addEntity2)
{
switch (e.Entry.State)
{
case EntityState.Added:
addEntity2.CreateTime = DateTime.UtcNow;
addEntity2.CreateUserId = _userInfo.Id;
addEntity2.CreateUser = _userInfo.RealName;
break;
case EntityState.Deleted:
addEntity2.CreateTime = DateTime.UtcNow;
addEntity2.CreateUserId = _userInfo.Id;
addEntity2.CreateUser = _userInfo.RealName;
break;
}
}
}
#endregion
public virtual DbSet<TaskAllocationRule> TaskAllocationRule { get; set; }
public virtual DbSet<VisitTask> VisitTask { get; set; }

View File

@ -43,20 +43,7 @@ public class AuditingInterceptor : ISaveChangesInterceptor
#endregion
#region SavedChanges
public int SavedChanges(SaveChangesCompletedEventData eventData, int result)
{
if (_audit.Entities.Count > 0)
{
var auditContext = eventData.Context as IRaCISDBContext;
_audit.Succeeded = true;
_audit.EndTime = DateTime.Now;
auditContext.SaveChangesAudits.Add(_audit);
auditContext.SaveChanges();
}
return result;
}
public async ValueTask<int> SavedChangesAsync(
SaveChangesCompletedEventData eventData,
int result,