Пример #1
0
            public virtual IEnumerable <T> GetList(Expression <Func <T, object> > expression, Operator op, object param)
            {
                IEnumerable <T> result = null;

                using (var dbConnection = dbConnectionFactory.CreateConnection())
                {
                    if (typeof(ISoftDelete).IsAssignableFrom(typeof(T)))
                    {
                        Func <T, bool> d = MemoryCacheHelper.GetOrAddCacheItem($"Func_{typeof(T).Name}", () =>
                        {
                            ParameterExpression parameterExpression = Expression.Parameter(typeof(T), "s");

                            PropertyInfo propertyInfo = typeof(T).GetProperty("IsDeleted");

                            MemberExpression memberExpression = Expression.Property(parameterExpression, propertyInfo);

                            BinaryExpression binaryExpression = Expression.MakeBinary(ExpressionType.Equal, memberExpression, Expression.Constant(true));

                            LambdaExpression lambdaExpression = Expression.Lambda(binaryExpression, parameterExpression);

                            return((Func <T, bool>)lambdaExpression.Compile());
                        });

                        result = dbConnection.GetList <T>(Predicates.Field(expression, op, param)).Where(d).ToList();
                    }
                    else
                    {
                        result = dbConnection.GetList <T>(Predicates.Field(expression, op, param)).ToList();
                    }
                }

                return(result);
            }
Пример #2
0
            public virtual IEnumerable <T> GetList()
            {
                IEnumerable <T> result = null;

                using (var dbConnection = dbConnectionFactory.CreateConnection())
                {
                    if (typeof(ISoftDelete).IsAssignableFrom(typeof(T)))
                    {
                        var executeSql = MemoryCacheHelper.GetOrAddCacheItem <string>(typeof(T).Name, () =>
                        {
                            var properties = typeof(T).GetProperties();
                            var tablename  = typeof(T).Name;

                            return($"select {string.Join(",", properties.Select(s => s.Name))} from {tablename} where isdeleted = 0");
                        });

                        result = dbConnection.Query <T>(executeSql);
                    }
                    else
                    {
                        result = dbConnection.GetList <T>().ToList();
                    }
                }

                return(result);
            }