public static void AddSoftDeleteQueryFilter( this IMutableEntityType entityData, MyQueryFilterTypes queryFilterType, IUserId userIdProvider = null) { var methodName = $"Get{queryFilterType}Filter"; var methodToCall = typeof(SoftDeleteQueryExtensions) .GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Static) .MakeGenericMethod(entityData.ClrType); var filter = methodToCall .Invoke(null, new object[] { userIdProvider }); entityData.SetQueryFilter((LambdaExpression)filter); }
public static void AddSoftDeleteQueryFilter( //#C this IMutableEntityType entityData, //#D MyQueryFilterTypes queryFilterType, //#E IUserId userIdProvider = null) //#F { var methodName = $"Get{queryFilterType}Filter"; //#G var methodToCall = typeof(SoftDeleteQueryExtensions) //#G .GetMethod(methodName, //#G BindingFlags.NonPublic | BindingFlags.Static) //#G .MakeGenericMethod(entityData.ClrType); //#G var filter = methodToCall //#G .Invoke(null, new object[] { userIdProvider }); //#G entityData.SetQueryFilter((LambdaExpression)filter); //#H if (queryFilterType == MyQueryFilterTypes.SoftDelete) { entityData.AddIndex(entityData.FindProperty(nameof(ISoftDelete.SoftDeleted))); } if (queryFilterType == MyQueryFilterTypes.UserId) { entityData.AddIndex(entityData.FindProperty(nameof(IUserId.UserId))); } }