35 lines
1.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|