@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user