Beispiel #1
0
 private static IQueryable <T> OrderByDescending <T>(this IQueryable <T> queryable,
                                                     IRelationalSpecification <T> specification) where T : class
 {
     return(specification.OrderByDescending == default || specification.OrderBy != default
     ? queryable
     : queryable.OrderByDescending(specification.OrderByDescending));
 }
Beispiel #2
0
 public static IQueryable <T> Specify <T>(this IQueryable <T> queryable, IRelationalSpecification <T> specification)
     where T : class
 {
     return(queryable
            .SetTracking(specification)
            .Include(specification)
            .Where(specification)
            .OrderBy(specification)
            .OrderByDescending(specification)
            .SkipTake(specification));
 }
Beispiel #3
0
 private static IQueryable <T> SetTracking <T>(this IQueryable <T> queryable,
                                               IRelationalSpecification <T> specification) where T : class
 {
     return(specification.TrackingEnabled ? queryable : queryable.AsNoTracking());
 }
Beispiel #4
0
 private static IQueryable <T> Where <T>(this IQueryable <T> queryable, IRelationalSpecification <T> specification)
     where T : class
 {
     return(specification.Criteria == default ? queryable : queryable.Where(specification.Criteria));
 }
Beispiel #5
0
 private static IQueryable <T> SkipTake <T>(this IQueryable <T> queryable,
                                            IRelationalSpecification <T> specification) where T : class
 {
     return(specification.Take == 0 ? queryable : queryable.Skip(specification.Skip).Take(specification.Take));
 }
Beispiel #6
0
 private static IQueryable <T> Include <T>(this IQueryable <T> queryable, IRelationalSpecification <T> specification)
     where T : class
 {
     return(specification.Includes.Aggregate(queryable, (current, include) => current.Include(include)));
 }