Пример #1
0
 private ValueTask <T> FindAsync(ReadConsistency consistency, params object[] keyValues)
 {
     if (consistency == ReadConsistency.Weak)
     {
         return(_readOnlydbSet.FindAsync(keyValues));
     }
     return(_dbSet.FindAsync(keyValues));
 }
Пример #2
0
        public virtual IQueryable <T> GetAll(ReadConsistency consistency = ReadConsistency.Default, Expression <Func <T, object> >[] propertySelectors = null)
        {
            IQueryable <T> query = propertySelectors != null?
                                   WithDetails(propertySelectors) :
                                       GetQueryable();

            return(query.AsNoTracking());
        }
Пример #3
0
        public virtual ValueTask <T> Get(TKey key, bool includeDetails = false, ReadConsistency consistency = ReadConsistency.Default)
        {
            if (key is IEntityKey <T> ek)
            {
                return(includeDetails ? GetWithDetails(ek, consistency) : FindAsync(consistency, ek.GetValues()));
            }

            return(FindAsync(consistency, key));
        }
Пример #4
0
        public override DbContext GetContext(ReadConsistency consistency)
        {
            switch (consistency)
            {
            case ReadConsistency.Strong: return(Context);

            case ReadConsistency.Weak: return(_readOnlyContext);

            default: return(Context);
            }
        }
Пример #5
0
        protected virtual IQueryable <T> GetQueryable(ReadConsistency consistency)
        {
            switch (consistency)
            {
            case ReadConsistency.Strong: return(_dbSet);

            case ReadConsistency.Weak: return(_readOnlydbSet);

            default: return(_dbSet);
            }
        }
Пример #6
0
        public Task <PagedQuery <T> > GetAllPaginated(
            int page            = 1,
            int pageSize        = 100,
            bool includeDetails = true,
            Func <IQueryable <T>, IQueryable <T> > filterFunc      = null,
            Func <IQueryable <T>, IOrderedQueryable <T> > sortFunc = null,
            ReadConsistency consistency = ReadConsistency.Default)
        {
            var query = GetAll(includeDetails, consistency);

            if (filterFunc != null)
            {
                query = filterFunc(query);
            }

            return(query.AsPagedQuery(page, pageSize, sortFunc));
        }
Пример #7
0
 public virtual DbContext GetContext(ReadConsistency consistency)
 {
     return(_context);
 }
Пример #8
0
        public override async ValueTask <T> Get(TKey key, bool includeDetails = true, ReadConsistency consistency = ReadConsistency.Default)
        {
            if (includeDetails)
            {
                IQueryable <T> query = WithDetailsSingle(consistency);
                return(await query.FirstOrDefaultAsync(x => x.Id.Equals(key)));
            }

            return(await base.Get(key, includeDetails, consistency));
        }
Пример #9
0
 public virtual ValueTask <T> Get(TKey key, ReadConsistency consistency = ReadConsistency.Default)
 {
     return(_dbSet.FindAsync(key));
 }
Пример #10
0
        public virtual IQueryable <T> GetAll(bool includeDetails = false, ReadConsistency consistency = ReadConsistency.Default)
        {
            IQueryable <T> query = includeDetails ? WithDetails(consistency) : GetQueryable(consistency);

            return(query.AsNoTracking());
        }
Пример #11
0
 private async ValueTask <T> GetWithDetails(IEntityKey <T> key, ReadConsistency consistency)
 {
     return(await WithDetailsSingle(consistency).FirstOrDefaultAsync(key.GetFilter()));
 }
Пример #12
0
 protected virtual IQueryable <T> WithDetailsSingle(ReadConsistency consistency) => WithDetails(consistency);
Пример #13
0
 protected virtual IQueryable <T> WithDetails(ReadConsistency consistency) => GetQueryable(consistency);