Example #1
0
        public override async Task <Resource> Load(int id)
        {
            if (ScopedCache.ContainsKey(id))
            {
                return(ScopedCache[id]);
            }

            var resource = await FromCache(id);

            if (resource == null)
            {
                resource = await DbContext.Resources
                           .Include(c => c.Secrets)
                           .Include(c => c.Managers)
                           .Where(c => c.Id == id)
                           .SingleOrDefaultAsync();

                await ToCache(resource);
            }
            else
            {
                DbContext.Resources.Attach(resource);
            }

            ScopedCache.Add(id, resource);

            return(resource);
        }
Example #2
0
        public override async Task <Client> Load(int id)
        {
            if (ScopedCache.ContainsKey(id))
            {
                return(ScopedCache[id]);
            }

            var client = await FromCache(id);

            if (client == null)
            {
                client = await DbContext.Clients
                         .Include(c => c.Claims)
                         .Include(c => c.Secrets)
                         .Include(c => c.Events)
                         .Include(c => c.EventHandlers).ThenInclude(e => e.ClientEvent).ThenInclude(e => e.Client)
                         .Include(c => c.Managers)
                         .Include(c => c.Urls)
                         .Where(c => c.Id == id)
                         .SingleOrDefaultAsync();

                await ToCache(client);
            }
            else
            {
                DbContext.Clients.Attach(client);
            }

            ScopedCache.Add(id, client);

            return(client);
        }
Example #3
0
        public virtual async Task <TEntity> Load(int id)
        {
            if (ScopedCache.ContainsKey(id))
            {
                return(ScopedCache[id]);
            }

            var entity = await FromCache(id);

            if (entity == null)
            {
                entity = await DbContext.Set <TEntity>().FindAsync(id);
                await ToCache(entity);
            }
            else
            {
                DbContext.Set <TEntity>().Attach(entity);
            }

            ScopedCache.Add(id, entity);
            return(entity);
        }
Example #4
0
        public virtual async Task <TEntity> Load(int id, Func <IQueryable <TEntity>, IQueryable <TEntity> > includes = null)
        {
            if (id == 0)
            {
                return(null);
            }

            if (ScopedCache.ContainsKey(id))
            {
                return(ScopedCache[id]);
            }

            var entity = await FromCache(id);

            if (entity == null)
            {
                IQueryable <TEntity> query = DbContext.Set <TEntity>();

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

                entity = await query.Where(e => e.Id == id).SingleOrDefaultAsync();

                await ToCache(entity);
            }
            else
            {
                DbContext.Set <TEntity>().Attach(entity);
            }

            ScopedCache.Add(id, entity);

            return(entity);
        }