自身一致性分析

This commit is contained in:
2022-07-07 16:03:11 +08:00
parent ac7a97706d
commit 2e4e88e39e
10 changed files with 259 additions and 147 deletions
@@ -81,28 +81,31 @@ namespace IRaCIS.Core.Infra.EFCore
{
modelBuilder.Entity<TableList>(builder =>
{
builder.HasBaseType((Type)null);
builder.ToView(null);
builder.HasNoKey();
builder.HasBaseType((Type)null);
builder.ToView(null);
builder.HasNoKey();
});
//modelBuilder.HasDbFunction(typeof(DbContext).GetMethod(nameof(GetTableList)));
modelBuilder.Entity<TaskAllocationRule>().HasMany(t => t.DoctorVisitTaskList).WithOne(t => t.DoctorTaskAllocationRule).HasForeignKey(t=> new { t.DoctorUserId,t.TrialId } ).HasPrincipalKey(u=> new { u.DoctorUserId,u.TrialId });
modelBuilder.Entity<TaskAllocationRule>().HasMany(t => t.DoctorVisitTaskList).WithOne(t => t.DoctorTaskAllocationRule).HasForeignKey(t => new { t.DoctorUserId, t.TrialId }).HasPrincipalKey(u => new { u.DoctorUserId, u.TrialId });
modelBuilder.Entity<TaskMedicalReviewRule>().HasMany(t => t.DoctorVisitTaskList).WithOne(t => t.DoctorTaskMedicalReviewRule).HasForeignKey(t => new { t.DoctorUserId, t.TrialId }).HasPrincipalKey(u => new { u.DoctorUserId, u.TrialId });
modelBuilder.Entity<TaskMedicalReviewRule>().HasMany(t => t.TaskMedicalReviewList).WithOne(t => t.TaskMedicalReviewRule).HasForeignKey(t => new { t.DoctorUserId, t.TrialId }).HasPrincipalKey(u => new { u.DoctorUserId, u.TrialId });
modelBuilder.Entity<SubjectUser>().HasMany(t => t.SubjectArmVisitTaskList).WithOne(t=>t.SujectArm).HasForeignKey(t => new { t.SubjectId,t.ArmEnum}).HasPrincipalKey(u => new { u.SubjectId,u.ArmEnum });
modelBuilder.Entity<VisitTask>().HasMany(t => t.JudgeVisitList).WithOne(t=>t.JudgeVisitTask);
modelBuilder.Entity<SubjectUser>().HasMany(t => t.SubjectArmVisitTaskList).WithOne(t => t.SujectArm).HasForeignKey(t => new { t.SubjectId, t.ArmEnum }).HasPrincipalKey(u => new { u.SubjectId, u.ArmEnum });
modelBuilder.Entity<VisitTask>().HasMany(t => t.JudgeVisitList).WithOne(t => t.JudgeVisitTask);
//modelBuilder.Entity<SubjectVisit>().HasMany(t => t.VisitTaskList).WithOne(t => t.SourceSubjectVisit).HasForeignKey(t=>t.SourceSubjectVisitId).HasPrincipalKey(t=>t.Id);
//modelBuilder.Entity<VisitTask>().HasMany(t => t.AnalysisVisitTaskList).WithOne().HasForeignKey(t => t.TaskConsistentRuleId).HasPrincipalKey(u => u.SourceSubjectVisitId);
modelBuilder.Entity<VisitTask>().HasMany(t => t.TaskMedicalReviewList).WithOne(t=>t.VisitTask).HasForeignKey(t => t.VisitTaskId);
modelBuilder.Entity<VisitTask>().HasMany(t => t.TaskMedicalReviewList).WithOne(t => t.VisitTask).HasForeignKey(t => t.VisitTaskId);
modelBuilder.Entity<VisitTask>().HasMany(t => t.SameSubjectVisiTaskList).WithOne().HasForeignKey(t => t.SubjectId).HasPrincipalKey(u=>u.SubjectId);
modelBuilder.Entity<VisitTask>().HasOne(t => t.Subject).WithMany(s=>s.SubjectVisitTaskList).HasForeignKey(t => t.SubjectId);
modelBuilder.Entity<Dictionary>().HasMany(t => t.ChildList).WithOne(t => t.Parent);
modelBuilder.Entity<SubjectUser>().HasMany(t => t.EarlierSubjectUserList).WithOne(t => t.OrignalSubjectUser);
@@ -141,7 +144,7 @@ namespace IRaCIS.Core.Infra.EFCore
modelBuilder.Entity(entityType.ClrType).Property<Guid>(nameof(Entity.Id)).HasValueGenerator<MySequentialGuidValueGenerator>();
}
}
}
@@ -174,7 +177,7 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TrialExperienceCriteria> TrialExperienceCriteria { get; set; }
#endregion
@@ -284,7 +287,7 @@ namespace IRaCIS.Core.Infra.EFCore
#region Trial
public virtual DbSet<Trial> Trial { get; set; }
public virtual DbSet<TrialDictionary> TrialDictionary { get; set; }
public virtual DbSet<TrialStatusDetail> TrialDetail { get; set; }
@@ -425,7 +428,7 @@ namespace IRaCIS.Core.Infra.EFCore
public override int SaveChanges()
{
//UpdateAuditInfo().GetAwaiter();
AddAudit().GetAwaiter();
AddAudit().GetAwaiter();
return base.SaveChanges();
}
@@ -438,7 +441,7 @@ namespace IRaCIS.Core.Infra.EFCore
}
public async Task AddAudit()
public async Task AddAudit()
{
try
{
@@ -449,9 +452,9 @@ namespace IRaCIS.Core.Infra.EFCore
catch (Exception)
{
}
}
/// <summary>
@@ -460,71 +463,71 @@ namespace IRaCIS.Core.Infra.EFCore
//private async Task UpdateAuditInfo()
//{
//ChangeTracker.DetectChanges(); // Important!
//// 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
//var entities = ChangeTracker.Entries()
// .Where(u => (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)).Where(x=>x.Entity.GetType()!=typeof(data)).ToList();
//AuditingData auditingData = new AuditingData(this, _userInfo);
//await auditingData.IncomingEntitys(entities);
//var items = entities.SelectMany(x => x.Entity.GetType().ToString());
//ChangeTracker.DetectChanges(); // Important!
//foreach (var t in entities)
//{
// switch (t.State)
// {
//// 获取所有更改,删除,新增的实体,但排除审计实体(避免死循环)
//var entities = ChangeTracker.Entries()
// .Where(u => (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)).Where(x=>x.Entity.GetType()!=typeof(data)).ToList();
//AuditingData auditingData = new AuditingData(this, _userInfo);
//await auditingData.IncomingEntitys(entities);
//var items = entities.SelectMany(x => x.Entity.GetType().ToString());
// case EntityState.Deleted:
//foreach (var t in entities)
//{
// switch (t.State)
// {
// break;
// case EntityState.Modified:
// case EntityState.Deleted:
// if (t.Entity is IAuditUpdate updateEntity1)
// {
// updateEntity1.UpdateTime = DateTime.UtcNow.AddHours(8);
// updateEntity1.UpdateUserId = _userInfo.Id;
// }
// break;
// case EntityState.Modified:
// if (t.Entity is IAuditUpdate updateEntity1)
// {
// updateEntity1.UpdateTime = DateTime.UtcNow.AddHours(8);
// updateEntity1.UpdateUserId = _userInfo.Id;
// }
// break;
// //添加的时候,更新审计字段也赋值
// case EntityState.Added:
// break;
// //添加的时候,更新审计字段也赋值
// case EntityState.Added:
// ////// 仓储添加时 就有id了
// //if (t.Entity is Entity entity && entity.Id == Guid.Empty)
// //{
// // entity.Id = NewId.NextGuid();
// //}
// ////// 仓储添加时 就有id了
// //if (t.Entity is Entity entity && entity.Id == Guid.Empty)
// //{
// // entity.Id = NewId.NextGuid();
// //}
// if (t.Entity is IAuditAdd addEntity)
// {
// if (addEntity.CreateTime == default(DateTime))
// {
// addEntity.CreateTime = DateTime.UtcNow.AddHours(8);
// }
// if (t.Entity is IAuditAdd addEntity)
// {
// if (addEntity.CreateTime == default(DateTime))
// {
// addEntity.CreateTime = DateTime.UtcNow.AddHours(8);
// }
// addEntity.CreateUserId = _userInfo.Id;
// }
// addEntity.CreateUserId = _userInfo.Id;
// }
// if (t.Entity is IAuditUpdate updateEntity)
// {
// updateEntity.UpdateTime = DateTime.UtcNow.AddHours(8);
// updateEntity.UpdateUserId = _userInfo.Id;
// }
// if (t.Entity is IAuditUpdate updateEntity)
// {
// updateEntity.UpdateTime = DateTime.UtcNow.AddHours(8);
// updateEntity.UpdateUserId = _userInfo.Id;
// }
// if (t.Entity is IAuditAddWithUserName addEntity3)
// {
// addEntity3.CreateTime = DateTime.UtcNow.AddHours(8);
// addEntity3.CreateUserId = _userInfo.Id;
// addEntity3.CreateUser = _userInfo.RealName;
// }
// break;
// }
//}
// if (t.Entity is IAuditAddWithUserName addEntity3)
// {
// addEntity3.CreateTime = DateTime.UtcNow.AddHours(8);
// addEntity3.CreateUserId = _userInfo.Id;
// addEntity3.CreateUser = _userInfo.RealName;
// }
// break;
// }
//}
//}
@@ -567,7 +570,7 @@ namespace IRaCIS.Core.Infra.EFCore
break;
}
}
if (e.Entry.Entity is IAuditAddWithUserName addEntity2)
{
switch (e.Entry.State)