EI-Image-Viewer-Api/IRaCIS.Core.Infra.EFCore/Interceptor/SoftDeleteQueryExtension.cs

35 lines
1.1 KiB
C#

using IRaCIS.Core.Domain.Models;
using Microsoft.EntityFrameworkCore.Metadata;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Infra.EFCore
{
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, new object[] { });
entityData.SetQueryFilter((LambdaExpression)filter);
}
private static LambdaExpression GetSoftDeleteFilter<TEntity>()
where TEntity : class, ISoftDelete
{
Expression<Func<TEntity, bool>> filter = x => !x.IsDeleted;
return filter;
}
}
}