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);
        }
Exemplo n.º 2
0
        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)));
            }
        }