Compare commits

..

No commits in common. "d10c936003f66611539428a3986086a84af04b0c" and "78bc09d71af088b8250410e2f5b625d07609622e" have entirely different histories.

3 changed files with 8 additions and 47 deletions

View File

@ -5,6 +5,9 @@ namespace IRaCIS.Core.Domain.Models;
public partial class TrialStatusDetail : BaseAddAuditEntity
{
#region 导航属性
[JsonIgnore]
public List<EnrollDetail> IntoGroupDetails { get; set; }
[JsonIgnore]
public Trial Trial { get; set; }
#endregion

View File

@ -3,7 +3,6 @@ using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure.Encryption;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Newtonsoft.Json;
using System.ComponentModel;
@ -78,11 +77,11 @@ public class IRaCISDBContext : DbContext
});
modelBuilder.Entity<Trial>(entity =>
{
{
//项目术语配置
entity.OwnsMany(x => x.TrialObjectNameList, ownedNavigationBuilder =>
{
ownedNavigationBuilder.ToJson();
ownedNavigationBuilder.ToJson() ;
});
});
@ -145,54 +144,13 @@ public class IRaCISDBContext : DbContext
base.OnModelCreating(modelBuilder);
//软删除筛选器通常依赖于实体模型的完整定义(例如属性映射、继承关系等)
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
// 软删除配置
if (typeof(ISoftDelete).IsAssignableFrom(entityType.ClrType))
{
//entityType.AddSoftDeleteQueryFilter();
entityType.AddSoftDeleteQueryFilter();
// 动态创建表达式e => e.IsDeleted==false
var parameter = Expression.Parameter(entityType.ClrType, "e");
var property = Expression.Property(parameter, nameof(ISoftDelete.IsDeleted));
var filter = Expression.Lambda(
Expression.Equal(property, Expression.Constant(false)),
parameter);
// 应用全局查询筛选器
modelBuilder.Entity(entityType.ClrType).HasQueryFilter(filter);
//Console.WriteLine($"实体应用软删除:{entityType.ClrType.Name}");
}
foreach (var navigation in entityType.GetNavigations())
{
if (navigation.IsCollection) continue;
// 配置基于导航属性的软删除查询筛选器
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));
var filterNav = Expression.Lambda(navigationFilter, parameterNav);
modelBuilder.Entity(clrType).HasQueryFilter(filterNav);
//Console.WriteLine($"实体应用软删除:{entityType.ClrType.Name} 导航属性{filterNav}");
}
}
if (typeof(Entity).IsAssignableFrom(entityType.ClrType))
@ -632,7 +590,7 @@ public class TestLength : Entity
public string Name { get; set; }
[StringLength(1000)]
public string[] StringList { get; set; } = new string[] { };
public string[] StringList { get; set; }=new string[] { };
public List<DateTime> DateTimeList { get; set; } = new List<DateTime>();

View File

@ -21,7 +21,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
//对于全局修改的任务而言,会关联多个全局访视阅片结果(因为同一个访视结果,会被多个全局修改)
//subject 删除了,但是任务没删除,导致的查询问题
//builder.HasQueryFilter(b => b.Subject.IsDeleted == false);
builder.HasQueryFilter(b => b.Subject.IsDeleted == false);
}
}