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