using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; namespace PoweredSoft.DbContext.Core { public static class DbContextQueryableExtensions { private static IQueryableExtensionService service; public static void InitializeExtensionService(IQueryableExtensionService queryableService) { service = queryableService; } public static IQueryable Include(this IQueryable source, Expression> path) where T : class => service.Include(source, path); public static IQueryable AsNoTracking(this IQueryable source) => service.AsNoTracking(source); public static IQueryable AsNoTracking(this IQueryable source) where T : class => service.AsNoTracking(source); public static IQueryable Include(this IQueryable source, string path) where T : class => service.Include(source, path); public static Task FirstOrDefaultAsync(this IQueryable source, CancellationToken cancellationToken = default) where T : class => service.FirstOrDefaultAsync(source, cancellationToken); public static Task FirstOrDefaultAsync(this IQueryable source, Expression> predicate, CancellationToken cancellationToken = default) where T : class => service.FirstOrDefaultAsync(source, predicate, cancellationToken); public static Task FirstAsync(this IQueryable source, CancellationToken cancellationToken = default) where T : class => service.FirstAsync(source, cancellationToken); public static Task FirstAsync(this IQueryable source, Expression> predicate, CancellationToken cancellationToken = default) where T : class => service.FirstAsync(source, predicate, cancellationToken); public static Task AnyAsync(this IQueryable source, CancellationToken cancellationToken = default) where T : class => service.AnyAsync(source, cancellationToken); public static Task AnyAsync(this IQueryable source, Expression> predicate, CancellationToken cancellationToken = default) where T : class => service.AnyAsync(source, predicate, cancellationToken); public static Task> ToListAsync(this IQueryable source, CancellationToken cancellationToken = default) where T : class => service.ToListAsync(source, cancellationToken); } }