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;
}
}