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); }
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); }
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); }
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); }