diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 3f06bddc0..a9402c07c 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -173,27 +173,29 @@ public class IRaCISDBContext : DbContext { if (navigation.IsCollection) continue; + + #region 有问题 + // 比如 e.SourceSubjectVisit.IsDeleted == False 还会导致 dicom 查询增加额外很多的连表 因为访视 项目 项目中心,dicom 都是软删除 + // + //// 配置基于导航属性的软删除查询筛选器 + //if (typeof(ISoftDelete).IsAssignableFrom(navigation.TargetEntityType.ClrType)) + //{ + // var clrType = entityType.ClrType; + // var targetType = navigation.TargetEntityType.ClrType; - #region 有问题 - // 配置基于导航属性的软删除查询筛选器 - if (typeof(ISoftDelete).IsAssignableFrom(navigation.TargetEntityType.ClrType)) - { - var clrType = entityType.ClrType; - var targetType = navigation.TargetEntityType.ClrType; + // //e => e.Subject.IsDeleted==false + // var parameterNav = Expression.Parameter(clrType, "e"); + // var navigationProperty = Expression.Property(parameterNav, navigation.Name); + // var navigationFilter = Expression.Equal( + // Expression.Property(navigationProperty, nameof(ISoftDelete.IsDeleted)), + // Expression.Constant(false)); - //e => e.Subject.IsDeleted==false - var parameterNav = Expression.Parameter(clrType, "e"); - var navigationProperty = Expression.Property(parameterNav, navigation.Name); - var navigationFilter = Expression.Equal( - Expression.Property(navigationProperty, nameof(ISoftDelete.IsDeleted)), - 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 diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs index 873e12540..a7bd145e0 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ImageConfigration.cs @@ -13,6 +13,8 @@ public class DicomStudyConfigration : IEntityTypeConfiguration { 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.DicomStudyMonitorList).WithOne(sm => sm.DicomStudy).HasForeignKey(sm => sm.StudyId).HasPrincipalKey(se => se.Id); @@ -40,6 +42,8 @@ public class DicomInstanceConfigration : IEntityTypeConfiguration { 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); }