public static IQueryable <TEntity> GetQueryable <TEntity>( this IReadOnlyBasicRepository <TEntity> repository, params Expression <Func <TEntity, object> >[] includePropertySelectors) where TEntity : class, IEntity { var repo = ProxyHelper.UnProxy(repository) as ISupportsPredicateQuery <TEntity>; return(repo != null?repo.GetQueryable(includePropertySelectors) : null); }
public static IQueryable <TEntity> GetQueryable <TEntity>( this IReadOnlyBasicRepository <TEntity> repository, Expression <Func <TEntity, bool> > predicate = null) where TEntity : class, IEntity { var repo = ProxyHelper.UnProxy(repository) as ISupportsPredicateQuery <TEntity>; return(repo != null?repo.GetQueryable(predicate) : null); }
public static IMongoDbRepository <TEntity> ToMongoDbRepository <TEntity>(this IReadOnlyBasicRepository <TEntity> repository) where TEntity : class, IEntity { if (repository is IMongoDbRepository <TEntity> mongoDbRepository) { return(mongoDbRepository); } throw new ArgumentException("Given repository does not implement " + typeof(IMongoDbRepository <TEntity>).AssemblyQualifiedName, nameof(repository)); }
/// <summary> /// 获取<typeparamref name="TEntity"/>查询(不跟踪改变的)数据源,并可附加过滤条件模型 /// </summary> /// <param name="model">数据过滤模型</param> /// <param name="includeDetails">是否包含明细,默认true</param> /// <returns>符合条件的数据集</returns> public static IQueryable <TEntity> CreateFilteredQuery <TEntity>(this IReadOnlyBasicRepository <TEntity> repository, IFilterModel model = null, Func <IQueryable <TEntity>, IFilterModel, IQueryable <TEntity> > func = null, bool includeDetails = true) where TEntity : class, IEntity { var repo = ProxyHelper.UnProxy(repository) as ISupportsPredicateQuery <TEntity>; return(repo != null?repo.CreateFilteredQuery(model, func, includeDetails) : null); }
public static async Task <long> GetCountAsync <TEntity>( this IReadOnlyBasicRepository <TEntity> repository, [NotNull] Expression <Func <TEntity, bool> > predicate, CancellationToken cancellationToken = default) where TEntity : class, IEntity { Check.NotNull(predicate, nameof(predicate)); var repo = ProxyHelper.UnProxy(repository) as ISupportsPredicateQuery <TEntity>; return(repo != null ? await repo.GetCountAsync(predicate, cancellationToken) : 0); }
public static IEfRepository <TEntity, TKey> ToEfRepository <TEntity, TKey>(this IReadOnlyBasicRepository <TEntity, TKey> repository) where TEntity : class, IEntity <TKey> { var efRepository = repository as IEfRepository <TEntity, TKey>; if (efRepository == null) { throw new ArgumentException("Given repository does not implement " + typeof(IEfRepository <TEntity, TKey>).AssemblyQualifiedName, nameof(repository)); } return(efRepository); }
/// <summary> /// 检查实体是否存在 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="repository"></param> /// <param name="predicate">查询条件谓语表达式</param> /// <param name="id">实体的主键</param> /// <param name="cancellationToken">取消线程标识</param> /// <returns></returns> public static async Task <bool> CheckExistsAsync <TEntity, TKey>( this IReadOnlyBasicRepository <TEntity, TKey> repository, [NotNull] Expression <Func <TEntity, bool> > predicate, TKey id = default, CancellationToken cancellationToken = default) where TEntity : class, IEntity <TKey> { Check.NotNull(predicate, nameof(predicate)); var repo = ProxyHelper.UnProxy(repository) as ISupportsPredicateQuery <TEntity, TKey>; return(repo != null ? await repo.CheckExistsAsync(predicate, id, cancellationToken): false); }
/// <summary> /// 递归获取实体列表 /// </summary> /// <typeparam name="TEntity">必须继承<see cref="IMayHaveParent<TKey>"/></typeparam> /// <typeparam name="TKey"></typeparam> /// <param name="repository"></param> /// <param name="id"></param> /// <returns></returns> public static async Task <List <TEntity> > GetLoopListAsync <TEntity, TKey>( this IReadOnlyBasicRepository <TEntity, TKey> repository, TKey id) where TEntity : class, IEntity <TKey> { if (!typeof(TEntity).HasImplementedRawGeneric(typeof(IMayHaveParent <>))) { throw new Exception($"实体类型不支持该扩展方法({MethodBase.GetCurrentMethod().DeclaringType.Name})"); } var repo = ProxyHelper.UnProxy(repository) as ISupportsSqlQuery <TEntity, TKey>; return(repo != null ? await repo.GetLoopListAsync(id) : null); }
public static IMongoQueryable <TEntity> GetMongoQueryable <TEntity>(this IReadOnlyBasicRepository <TEntity> repository) where TEntity : class, IEntity { return(repository.ToMongoDbRepository().GetMongoQueryable()); }
public static Task <IMongoCollection <TEntity> > GetCollectionAsync <TEntity>(this IReadOnlyBasicRepository <TEntity> repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { return(repository.ToMongoDbRepository().GetCollectionAsync(cancellationToken)); }
public static IMongoCollection <TEntity> GetCollection <TEntity>(this IReadOnlyBasicRepository <TEntity> repository) where TEntity : class, IEntity { return(repository.ToMongoDbRepository().Collection); }
public static IMongoDatabase GetDatabase <TEntity>(this IReadOnlyBasicRepository <TEntity> repository) where TEntity : class, IEntity { return(repository.ToMongoDbRepository().Database); }
public DemoUserManager(IReadOnlyBasicRepository <AppUser, Guid> users) { _users = users; }
public static DbContext GetDbContext <TEntity>(this IReadOnlyBasicRepository <TEntity> repository) where TEntity : class, IEntity { return(repository.ToEfCoreRepository().DbContext); }
public static Task <IMongoQueryable <TEntity> > GetMongoQueryableAsync <TEntity>(this IReadOnlyBasicRepository <TEntity> repository, CancellationToken cancellationToken = default, AggregateOptions aggregateOptions = null) where TEntity : class, IEntity { return(repository.ToMongoDbRepository().GetMongoQueryableAsync(cancellationToken, aggregateOptions)); }
public static Task <IAggregateFluent <TEntity> > GetAggregateAsync <TEntity>(this IReadOnlyBasicRepository <TEntity> repository, CancellationToken cancellationToken = default) where TEntity : class, IEntity { return(repository.ToMongoDbRepository().GetAggregateAsync(cancellationToken)); }
/// <summary> /// Gets the database set. /// </summary> /// <typeparam name="TEntity">The type of the t entity.</typeparam> /// <typeparam name="TKey">The type of the t key.</typeparam> /// <param name="repository">The repository.</param> /// <returns>DbSet<TEntity>.</returns> public static DbSet <TEntity> GetDbSet <TEntity, TKey>(this IReadOnlyBasicRepository <TEntity, TKey> repository) where TEntity : class, IEntity <TKey> { return(repository.ToEfCoreRepository().DbSet); }
public static Task <DbSet <TEntity> > GetDbSetAsync <TEntity>(this IReadOnlyBasicRepository <TEntity> repository) where TEntity : class, IEntity { return(repository.ToEfCoreRepository().GetDbSetAsync()); }