Skip to content

Instantly share code, notes, and snippets.

@mocella
Created November 4, 2024 14:40
Show Gist options
  • Save mocella/d79c1d20416593162974dc48e841043b to your computer and use it in GitHub Desktop.
Save mocella/d79c1d20416593162974dc48e841043b to your computer and use it in GitHub Desktop.
EFCore Global Query Filter
public static void AddQueryFilter<T>(this EntityTypeBuilder entityTypeBuilder, Expression<Func<T, bool>> expression)
{
var parameterType = Expression.Parameter(entityTypeBuilder.Metadata.ClrType);
var expressionFilter = ReplacingExpressionVisitor.Replace(
expression.Parameters.Single(), parameterType, expression.Body);
var currentQueryFilter = entityTypeBuilder.Metadata.GetQueryFilter();
if (currentQueryFilter != null)
{
var currentExpressionFilter = ReplacingExpressionVisitor.Replace(
currentQueryFilter.Parameters.Single(), parameterType, currentQueryFilter.Body);
expressionFilter = Expression.AndAlso(currentExpressionFilter, expressionFilter);
}
var lambdaExpression = Expression.Lambda(expressionFilter, parameterType);
entityTypeBuilder.HasQueryFilter(lambdaExpression);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment