using System.Linq.Expressions; using System.Reflection; using Bunny.Dao.Entity.Base; using Microsoft.EntityFrameworkCore.Metadata; namespace Bunny.Common.Context; /// /// 软删除过滤器 /// public static class SoftDeleteQueryExtension { /// /// 软删除过滤器 /// /// public static void AddSoftDeleteQueryFilter(this IMutableEntityType entityData) { var methodToCall = typeof(SoftDeleteQueryExtension) .GetMethod(nameof(GetSoftDeleteFilter), BindingFlags.NonPublic | BindingFlags.Static) ?.MakeGenericMethod(entityData.ClrType); var filter = methodToCall?.Invoke(null, []); entityData.SetQueryFilter((LambdaExpression)filter!); } /// /// 软删除 /// /// /// private static LambdaExpression GetSoftDeleteFilter() where TEntity : BaseEntity { Expression> filter = x => !x.IsDeleted; return filter; } }