代码整理
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
bd8a8f744c
commit
57d8673bb2
|
@ -36,8 +36,6 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
public IRaCISDBContext(DbContextOptions<IRaCISDBContext> options, IUserInfo userInfo, ILogger<IRaCISDBContext> logger
|
public IRaCISDBContext(DbContextOptions<IRaCISDBContext> options, IUserInfo userInfo, ILogger<IRaCISDBContext> logger
|
||||||
|
|
||||||
|
|
||||||
//IAuditingData auditingData
|
|
||||||
) : base(options)
|
) : base(options)
|
||||||
{
|
{
|
||||||
_logger= logger;
|
_logger= logger;
|
||||||
|
@ -49,36 +47,12 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
{
|
{
|
||||||
optionsBuilder.UseLoggerFactory(MyLoggerFactory)
|
optionsBuilder.UseLoggerFactory(MyLoggerFactory);
|
||||||
|
|
||||||
.ReplaceService<IModelCacheKeyFactory, DynamicModelCacheKeyFactoryDesignTimeSupport>();
|
|
||||||
|
|
||||||
optionsBuilder.UseExceptionProcessor();
|
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)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
|
@ -89,7 +63,6 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
builder.HasNoKey();
|
builder.HasNoKey();
|
||||||
});
|
});
|
||||||
|
|
||||||
//modelBuilder.HasDbFunction(typeof(DbContext).GetMethod(nameof(GetTableList)));
|
|
||||||
|
|
||||||
modelBuilder.Entity<ReadingQuestionTrial>().HasQueryFilter(p => p.IsAdditional==false);
|
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.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<Dictionary>().HasMany(t => t.ChildList).WithOne(t => t.Parent);
|
||||||
modelBuilder.Entity<SubjectUser>().HasMany(t => t.EarlierSubjectUserList).WithOne(t => t.OrignalSubjectUser);
|
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; }
|
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())
|
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
|
||||||
{
|
{
|
||||||
// 采用触发器的方式 设置 CreateUserId CreateTime UpdateTime UpdateUserId 稽查实体里面没有这四个字段的值 因为先后顺序的原因
|
// 采用触发器的方式 设置 CreateUserId CreateTime UpdateTime UpdateUserId 稽查实体里面没有这四个字段的值 因为先后顺序的原因
|
||||||
|
@ -587,12 +537,7 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
throw new DBSaveFailedException("SQL 事务失败,请检查环境。");
|
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<TaskAllocationRule> TaskAllocationRule { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<VisitTask> VisitTask { get; set; }
|
public virtual DbSet<VisitTask> VisitTask { get; set; }
|
||||||
|
|
|
@ -43,20 +43,7 @@ public class AuditingInterceptor : ISaveChangesInterceptor
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SavedChanges
|
#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(
|
public async ValueTask<int> SavedChangesAsync(
|
||||||
SaveChangesCompletedEventData eventData,
|
SaveChangesCompletedEventData eventData,
|
||||||
int result,
|
int result,
|
||||||
|
|
Loading…
Reference in New Issue