软删除配置调整
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

@ -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

View File

@ -13,6 +13,8 @@ public class DicomStudyConfigration : IEntityTypeConfiguration<DicomStudy>
{
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<DicomInstance>
{
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);
}