Subject 表添加 FinalSubjectVisitId 优化查询
parent
20d4ab82d6
commit
e5443a5016
|
@ -57,7 +57,6 @@ namespace IRaCIS.Application.Contracts
|
|||
public DateTime? VisitOverTime { get; set; }
|
||||
public string Reason { get; set; } = string.Empty;
|
||||
|
||||
|
||||
public Guid? FinalSubjectVisitId { get; set; }
|
||||
}
|
||||
|
||||
|
|
|
@ -39,20 +39,27 @@ namespace IRaCIS.Core.Application.Service
|
|||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
||||
.ForMember(d => d.LatestBlindName, u => u.MapFrom(s => s.LatestSubjectVisit.BlindName))
|
||||
.ForMember(d => d.LatestVisitName, u => u.MapFrom(s => s.LatestSubjectVisit.VisitName))
|
||||
//.ForMember(d => d.IsSubjectSexView, u => u.MapFrom(s => s.Trial.IsSubjectSexView))
|
||||
//.ForMember(d => d.IsSubjectExpeditedView, u => u.MapFrom(s => s.Trial.IsSubjectExpeditedView))
|
||||
|
||||
//不能对包含聚合或子查询的表达式执行聚合函数
|
||||
//.ForMember(d => d.InPlanStudyCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).Sum(k => k.StudyList.Count())))
|
||||
//.ForMember(d => d.OutPlanStudyCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan==false).Sum(k => k.StudyList.Count())))
|
||||
|
||||
//.ForMember(d => d.InPlanDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).SelectMany(k => k.StudyList).Count()))
|
||||
//.ForMember(d => d.OutPlanDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan == false).SelectMany(k => k.StudyList).Count()))
|
||||
//.ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => (Guid?)c.Id).FirstOrDefault()))
|
||||
//.ForMember(d => d.FinalSubjectVisitName, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => c.VisitName).FirstOrDefault()))
|
||||
|
||||
.ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.FinalSubjectVisitId))
|
||||
.ForMember(d => d.FinalSubjectVisitName, u => u.MapFrom(s => s.FinalSubjectVisit.VisitName))
|
||||
|
||||
//.ForMember(d => d.IsSubjectSexView, u => u.MapFrom(s => s.Trial.IsSubjectSexView))
|
||||
//.ForMember(d => d.IsSubjectExpeditedView, u => u.MapFrom(s => s.Trial.IsSubjectExpeditedView))
|
||||
|
||||
//不能对包含聚合或子查询的表达式执行聚合函数
|
||||
//.ForMember(d => d.InPlanStudyCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).Sum(k => k.StudyList.Count())))
|
||||
//.ForMember(d => d.OutPlanStudyCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan==false).Sum(k => k.StudyList.Count())))
|
||||
|
||||
//.ForMember(d => d.InPlanDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).SelectMany(k => k.StudyList).Count()))
|
||||
//.ForMember(d => d.OutPlanDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan == false).SelectMany(k => k.StudyList).Count()))
|
||||
|
||||
//.ForMember(d => d.InPlanNoneDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).SelectMany(k => k.NoneDicomStudyList).Count()))
|
||||
//.ForMember(d => d.OutPlanNoneDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan == false).SelectMany(k => k.NoneDicomStudyList).Count()))
|
||||
|
||||
//.ForMember(d => d.InPlanNoneDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan).SelectMany(k => k.NoneDicomStudyList).Count()))
|
||||
//.ForMember(d => d.OutPlanNoneDicomStudyUploadCount, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.InPlan == false).SelectMany(k => k.NoneDicomStudyList).Count()))
|
||||
.ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c=>(Guid?) c.Id).FirstOrDefault()))
|
||||
.ForMember(d => d.FinalSubjectVisitName, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => c.VisitName).FirstOrDefault()))
|
||||
.ForMember(d => d.InPlanVisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.InPlan)))
|
||||
.ForMember(d => d.OutPlanVisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.InPlan == false)))
|
||||
//执行不一定上传了 可能是失访 实际执行过了
|
||||
|
|
|
@ -13,10 +13,12 @@ namespace IRaCIS.Core.Domain.Models
|
|||
{
|
||||
public List<SubjectVisit> SubjectVisitList { get; set; } = new List<SubjectVisit>();
|
||||
|
||||
//public List<SubjectVisit> LastSubjectVisit { get; set; } = SubjectVisitList.where;
|
||||
|
||||
//受试者有TrialId SiteId
|
||||
//public List<TrialSiteUser> TrialSiteUserList { get; set; } = new List<TrialSiteUser>();
|
||||
|
||||
|
||||
[ForeignKey("FinalSubjectVisitId")]
|
||||
public SubjectVisit FinalSubjectVisit { get; set; }
|
||||
public Guid? FinalSubjectVisitId { get; set; }
|
||||
|
||||
|
||||
//需要配置是两个键连接
|
||||
|
@ -39,7 +41,7 @@ namespace IRaCIS.Core.Domain.Models
|
|||
|
||||
[ForeignKey("LatestSubjectVisitId")]
|
||||
public SubjectVisit LatestSubjectVisit { get; set; }
|
||||
public Guid? LatestSubjectVisitId { get; set; } = Guid.Empty;
|
||||
public Guid? LatestSubjectVisitId { get; set; }
|
||||
|
||||
//public bool IsMissingImages { get; set; } = false;
|
||||
|
||||
|
|
|
@ -26,7 +26,8 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
|||
.HasPrincipalKey(c => new { c.TrialId, c.SiteId });
|
||||
|
||||
//不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如受试者 最新的访视 在这里要显示配置
|
||||
//modelBuilder.Entity<Subject>().HasOne(s=>s.LatestSubjectVisit).WithOne(sv=>sv.Subject);
|
||||
builder.HasOne(s => s.LatestSubjectVisit);
|
||||
builder.HasOne(s => s.FinalSubjectVisit);
|
||||
builder.HasMany(s => s.SubjectVisitList).WithOne(sv => sv.Subject);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
|
|||
//.HasForeignKey(s => new { s.TrialId, s.SiteId })
|
||||
//.HasPrincipalKey(c => new { c.TrialId, c.SiteId });
|
||||
|
||||
|
||||
builder.HasOne(s => s.Subject).WithMany(sv => sv.SubjectVisitList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue