软删除配置调整
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-12-11 22:46:26 +08:00
parent 2a217c1a20
commit a74b264f39
2 changed files with 23 additions and 17 deletions

View File

@ -175,25 +175,27 @@ public class IRaCISDBContext : DbContext
if (navigation.IsCollection) continue; if (navigation.IsCollection) continue;
#region 有问题 #region 有问题
// 配置基于导航属性的软删除查询筛选器 // 比如 e.SourceSubjectVisit.IsDeleted == False 还会导致 dicom 查询增加额外很多的连表 因为访视 项目 项目中心dicom 都是软删除
if (typeof(ISoftDelete).IsAssignableFrom(navigation.TargetEntityType.ClrType)) //
{ //// 配置基于导航属性的软删除查询筛选器
var clrType = entityType.ClrType; //if (typeof(ISoftDelete).IsAssignableFrom(navigation.TargetEntityType.ClrType))
var targetType = navigation.TargetEntityType.ClrType; //{
// var clrType = entityType.ClrType;
// var targetType = navigation.TargetEntityType.ClrType;
//e => e.Subject.IsDeleted==false // //e => e.Subject.IsDeleted==false
var parameterNav = Expression.Parameter(clrType, "e"); // var parameterNav = Expression.Parameter(clrType, "e");
var navigationProperty = Expression.Property(parameterNav, navigation.Name); // var navigationProperty = Expression.Property(parameterNav, navigation.Name);
var navigationFilter = Expression.Equal( // var navigationFilter = Expression.Equal(
Expression.Property(navigationProperty, nameof(ISoftDelete.IsDeleted)), // Expression.Property(navigationProperty, nameof(ISoftDelete.IsDeleted)),
Expression.Constant(false)); // Expression.Constant(false));
var filterNav = Expression.Lambda(navigationFilter, parameterNav); // var filterNav = Expression.Lambda(navigationFilter, parameterNav);
modelBuilder.Entity(clrType).HasQueryFilter(filterNav); // modelBuilder.Entity(clrType).HasQueryFilter(filterNav);
Console.WriteLine($"实体应用软删除:{entityType.ClrType.Name} 导航属性{filterNav}"); // Console.WriteLine($"实体应用软删除:{entityType.ClrType.Name} 导航属性{filterNav}");
} //}
#endregion #endregion

View File

@ -13,6 +13,8 @@ public class DicomStudyConfigration : IEntityTypeConfiguration<DicomStudy>
{ {
builder.HasKey(e => e.SeqId); builder.HasKey(e => e.SeqId);
//builder.HasMany(s => s.InstanceList).WithOne(se => se.DicomStudy).HasForeignKey(se => se.StudyId).HasPrincipalKey(st => st.Id);
builder.HasMany(s => s.SeriesList).WithOne(se => se.DicomStudy).HasForeignKey(se => se.StudyId).HasPrincipalKey(st => st.Id); builder.HasMany(s => s.SeriesList).WithOne(se => se.DicomStudy).HasForeignKey(se => se.StudyId).HasPrincipalKey(st => st.Id);
builder.HasMany(s => s.DicomStudyMonitorList).WithOne(sm => sm.DicomStudy).HasForeignKey(sm => sm.StudyId).HasPrincipalKey(se => se.Id); builder.HasMany(s => s.DicomStudyMonitorList).WithOne(sm => sm.DicomStudy).HasForeignKey(sm => sm.StudyId).HasPrincipalKey(se => se.Id);
@ -40,6 +42,8 @@ public class DicomInstanceConfigration : IEntityTypeConfiguration<DicomInstance>
{ {
builder.HasKey(e => e.SeqId); builder.HasKey(e => e.SeqId);
builder.HasOne(e => e.DicomStudy).WithMany().HasForeignKey(t=>t.StudyId).HasPrincipalKey(st => st.Id);
builder.HasMany(s => s.ReadingTableAnswerRowInfoList).WithOne(di => di.Instance).HasForeignKey(t => t.InstanceId).HasPrincipalKey(se => se.Id); builder.HasMany(s => s.ReadingTableAnswerRowInfoList).WithOne(di => di.Instance).HasForeignKey(t => t.InstanceId).HasPrincipalKey(se => se.Id);
} }