Example #1
0
        public async Task <UserComposite> ReadUser(string email, IncludeOptions options = IncludeOptions.None)
        {
            var rs = await this.QueryUser(email, options);

            if (rs.Code == ResponseCode.Ok)
            {
                return(rs.Data.First());
            }
            return(null);
        }
Example #2
0
        public async Task <ResponseModel <UserComposite> > QueryUser(string email, IncludeOptions options = IncludeOptions.None)
        {
            TableQuery <EmailEntity> query = new TableQuery <EmailEntity>().Where(EmailEntity.QueryKey(email));
            var rs = await QueryEntities <EmailEntity>(query);

            if (rs.Code != ResponseCode.Ok)
            {
                return(ResponseModel <UserComposite> .Error(rs.Code, rs.Message));
            }
            if (rs.Data[0].Email.UserId == null || rs.Data[0].Email.UserId == Guid.Empty)
            {
                return(ResponseModel <UserComposite> .Error(ResponseCode.NotFound));
            }
            return(await QueryUser(rs.Data[0].Email.UserId, options));
        }
Example #3
0
        public async Task <ResponseModel <EmailComposite> > QueryEmail(string email, IncludeOptions options = IncludeOptions.None)
        {
            EmailComposite           c     = new EmailComposite();
            TableQuery <EmailEntity> query = new TableQuery <EmailEntity>().Where(EmailEntity.QueryKey(email));
            var rs = await QueryEntities <EmailEntity>(query);

            if (rs.Code != ResponseCode.Ok)
            {
                return(ResponseModel <EmailComposite> .Error(rs.Code, rs.Message));
            }
            c.Email = rs.Data[0].Email;
            if ((options & IncludeOptions.Entities) == IncludeOptions.Entities)
            {
                c.EmailEntity = rs.Data[0];
            }
            return(ResponseModel <EmailComposite> .Success(c));
        }
Example #4
0
        public async Task <ResponseModel <UserComposite> > QueryUser(Guid userId, IncludeOptions options = IncludeOptions.None)
        {
            TableQuery <UserEntity> query = new TableQuery <UserEntity>().Where(UserEntity.QueryKey(userId));
            var rs = await QueryEntities <UserEntity>(query);

            if (rs.Code != ResponseCode.Ok)
            {
                return(ResponseModel <UserComposite> .Error(rs.Code, rs.Message));
            }
            UserComposite c = new UserComposite(userId);

            c.User = rs.Data[0].User;
            if ((options & IncludeOptions.Entities) == IncludeOptions.Entities)
            {
                c.UserEntity = rs.Data[0];
            }
            return(ResponseModel <UserComposite> .Success(c));
        }
        public static IQueryable <TDomain> GetIncludes <TDomain>(this DbSet <TDomain> dbSet, IncludeOptions options) where TDomain : class
        {
            IQueryable <TDomain> request = dbSet;

            if (options?.Includes.Count() > 0)
            {
                request = dbSet.GetIncludes(options.Includes);
            }
            else
            {
                request = dbSet.GetIncludes();
            }

            return(request);
        }
Example #6
0
        public IQueryable <DomainType> GetAll(Expression <Func <DomainType, bool> > predicate = null, IncludeOptions options = null)
        {
            string key = (options != null) ? options.GetKey() : "";

            return(repository.GetAll(predicate, options).Cacheable($"{KEY_SALT}{key}", debugInfo, cacheKeyProvider, cacheServiceProvider));
        }
Example #7
0
 public DomainType Get(Expression <Func <DomainType, bool> > predicate, IncludeOptions options = null)
 {
     return(GetAll(predicate, options).FirstOrDefault());
 }
Example #8
0
        public IQueryable <DomainType> GetAll(Expression <Func <DomainType, bool> > predicate = null, IncludeOptions options = null)
        {
            var request = objectSet.GetIncludes(options);

            if (predicate != null)
            {
                request = request.Where(predicate);
            }

            //TODO: AsNoTracking??
            // ASNOTracking используется для read-only случаев, т.е. изменения не фиксируются при сохранении
            //return request.AsNoTracking().AsEnumerable();
            return(request);
        }