public virtual async Task <TEntity> GetAsync(TPrimaryKey id, Options.GetOptions <TEntity, TPrimaryKey> options)
        {
            var entity = await FirstOrDefaultAsync(id, options);

            if (entity == null)
            {
                throw new EntityNotFoundException(typeof(TEntity), id);
            }

            return(entity);
        }
        public virtual TEntity Get(TPrimaryKey id, Options.GetOptions <TEntity, TPrimaryKey> options)
        {
            var entity = FirstOrDefault(id, options);

            if (entity == null)
            {
                throw new EntityNotFoundException(typeof(TEntity), id);
            }

            return(entity);
        }
 public virtual Task <TEntity> FirstOrDefaultAsync(Expression <Func <TEntity, bool> > predicate, Options.GetOptions <TEntity, TPrimaryKey> options)
 {
     return(Task.FromResult(FirstOrDefault(predicate, options)));
 }
        public virtual TEntity FirstOrDefault(Expression <Func <TEntity, bool> > predicate, Options.GetOptions <TEntity, TPrimaryKey> options)
        {
            IQueryable <TEntity> query = AsQueryable(predicate: predicate);

            return(query.FirstOrDefault());
        }
 public virtual Task <TEntity> FirstOrDefaultAsync(TPrimaryKey id, Options.GetOptions <TEntity, TPrimaryKey> options)
 {
     return(Task.FromResult(FirstOrDefault(id, options)));
 }
        public virtual TEntity FirstOrDefault(TPrimaryKey id, Options.GetOptions <TEntity, TPrimaryKey> options)
        {
            IQueryable <TEntity> query = AsQueryable(predicate: CreateEqualityExpressionForId(id));

            return(query.FirstOrDefault());
        }