清理dbcontext 记录稽查代码位置
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-08-30 15:16:50 +08:00
parent 6276e0611a
commit 80a60dff38
5 changed files with 28 additions and 231 deletions
@@ -1,56 +0,0 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Infra.EFCore
{
#region AuditContext
public class AuditContext : DbContext
{
//传递委托进来写日志
private readonly string _connectionString;
public AuditContext(string connectionString)
{
_connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseSqlServer(_connectionString);
public DbSet<SaveChangesAudit> SaveChangesAudits { get; set; }
}
public class SaveChangesAudit
{
public Guid Id { get; set; }
//public Guid AuditId { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public bool Succeeded { get; set; } = false;
public string ErrorMessage { get; set; } = string.Empty;
public ICollection<EntityAudit> Entities { get; } = new List<EntityAudit>();
}
public class EntityAudit: IAuditAddWithUserName
{
public Guid Id { get; set; }
public Guid AlterId { get; set; }=Guid.Empty;
public Guid SaveChangesAuditId { get; set; }
public EntityState State { get; set; }
public string AuditMessage { get; set; }
public SaveChangesAudit SaveChangesAudit { get; set; }
public string CreateUser { get; set; } = string.Empty;
public Guid CreateUserId { get; set; }=Guid.Empty;
public DateTime CreateTime { get; set; }=DateTime.Now;
}
#endregion
}
@@ -162,9 +162,7 @@ namespace IRaCIS.Core.Infra.EFCore
public override async Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
{
// 采用触发器的方式 设置 CreateUserId CreateTime UpdateTime UpdateUserId 稽查实体里面没有这四个字段的值 因为先后顺序的原因
await AddAudit();
try
{
return await base.SaveChangesAsync(cancellationToken);
@@ -222,28 +220,7 @@ namespace IRaCIS.Core.Infra.EFCore
}
public async Task AddAudit()
{
//触发器里面提交事务 业务方法里面提交事务 会记录两次
var inspectionGeneralIdList = ChangeTracker.Entries().Where(t => typeof(DataInspection).IsAssignableFrom(t.Entity.GetType())).Select(t => ((DataInspection)t.Entity).GeneralId).ToList();
var entities = ChangeTracker.Entries().Where(u => (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))
.Where(t => !typeof(DataInspection).IsAssignableFrom(t.Entity.GetType()) && !inspectionGeneralIdList.Contains(((Entity)t.Entity).Id))
.ToList();
AuditingData auditingData = new AuditingData(this, _userInfo);
//await auditingData.IncomingEntitys(entities);
if (entities.Count > 0)
{
await auditingData.InsertAddEntitys(entities);
}
}
#region Doctor
public virtual DbSet<Dictionary> Dictionary { get; set; }
@@ -399,7 +376,6 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TrialAudit> TrialAudit { get; set; }
public virtual DbSet<UserType> UserType { get; set; }
public virtual DbSet<SaveChangesAudit> SaveChangesAudits { get; set; }