0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-07-01 19:12:57 +00:00
CleanArchitecture/CleanArchitecture.Infrastructure/Database/DbContextUtility.cs
2023-10-01 14:54:49 +02:00

27 lines
973 B
C#

using System;
using System.Linq.Expressions;
using System.Reflection;
using Microsoft.EntityFrameworkCore;
namespace CleanArchitecture.Infrastructure.Database;
public partial class ApplicationDbContext
{
public static class DbContextUtility
{
public const string IsDeletedProperty = "Deleted";
public static readonly MethodInfo PropertyMethod = typeof(EF)
.GetMethod(nameof(EF.Property), BindingFlags.Static | BindingFlags.Public)
!.MakeGenericMethod(typeof(bool));
public static LambdaExpression GetIsDeletedRestriction(Type type)
{
var parm = Expression.Parameter(type, "it");
var prop = Expression.Call(PropertyMethod, parm, Expression.Constant(IsDeletedProperty));
var condition = Expression.MakeBinary(ExpressionType.Equal, prop, Expression.Constant(false));
var lambda = Expression.Lambda(condition, parm);
return lambda;
}
}
}