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