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