Когда я использую HasQueryFilter, я не могу отключить один из фильтров
В MVC я использовал DynamicFilter, и я выбрал имя для каждого фильтра, и все фильтры будут отключены во время выполнения.
Есть ли метод в ядре .net?
private LambdaExpression SetSoftDeleteQueryFilter(IMutableEntityType entityType)
{
var parameter = Expression.Parameter(entityType.ClrType);
var propertyMethodInfo = typeof(EF).GetMethod("Property").MakeGenericMethod(typeof(bool));
var isDeletedProperty = Expression.Call(propertyMethodInfo, parameter, Expression.Constant("IsDeleted"));
var compareExpression = Expression.MakeBinary(ExpressionType.Equal, isDeletedProperty, Expression.Constant(false));
return Expression.Lambda(compareExpression, parameter);
}
private LambdaExpression SetActiveQueryFilter(IMutableEntityType entityType)
{
var parameter = Expression.Parameter(entityType.ClrType);
var propertyMethodInfo = typeof(EF).GetMethod("Property").MakeGenericMethod(typeof(bool));
var isDeletedProperty = Expression.Call(propertyMethodInfo, parameter, Expression.Constant("IsActive"));
var compareExpression = Expression.MakeBinary(ExpressionType.Equal, isDeletedProperty, Expression.Constant(true));
return Expression.Lambda(compareExpression, parameter);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Price>().HasOne(row => row.Product).WithMany(row => row.Prices).HasForeignKey(row => row.ProductId);
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
{
var lambdaExpression = SetSoftDeleteQueryFilter(entityType);
modelBuilder.Entity(entityType.ClrType).HasQueryFilter(lambdaExpression);
lambdaExpression = SetActiveQueryFilter(entityType);
modelBuilder.Entity(entityType.ClrType).HasQueryFilter(lambdaExpression);
}
}