Это лучший способ реализовать универсальные функции репозитория для функциональности грид?

У меня есть сетка (gijgo), и я использую Generic Repository Pattern и UOW. И я только что начал Предикаты Linq. Итак, поскольку я использую Linq для сущностей, мой общий репозиторий должен иметь общие функциональные возможности сетки - получать, добавлять, удалять, редактировать, фильтровать и сортировать для всех уровней данных (через свойства навигации и объединения). Каков наилучший способ сделать это?

Я уже написал обобщенную функцию в моем общем хранилище, но я не знаю, будет ли она выполнять всю сложную логику данных сетки для любых сценариев любого модуля. Я новичок в предикате linq. Каковы лучшие источники для прохождения ускоренного курса, включая такие функции, как асинхронность и расширение?

Моя функция GenericRepository для получения данных сетки (для этого я использовал LinqPad)

                public virtual List<TEntity> Get(Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, params Expression<Func<TEntity, object>>[] includeProperties)
            {
                IQueryable<TEntity> query = DbSet;
                foreach (Expression<Func<TEntity, object>> include in includeProperties)
                    query = query.Include(include);
         
                if (filter != null)
                    query = query.Where(filter);
         
                if (orderBy != null)
                    query = orderBy(query);
         
                return query.ToList();
            }

И я называю это, используя мои услуги как

        UnitOfWork _unitOfWork = new UnitOfWork();
        var  _empRepository = new GenericRepository<Player>(new PredicateBuilderSampleEntities());
        var emps = _empRepository.Get(x => x.CountryName == "Bulgaria" && x.total ==7,q => q.OrderByDescending(s => s.Name),includeProperties: player => player.Department).AsQueryable();
        var query = emps.Where(item => item.Department.Did == item.DeptId)
                      .Select(X=> new 
                       {
                            ID = X.ID,
                            Name = X.Name,
                            PlaceOfBirth = X.PlaceOfBirth,
                            CountryID = X.CountryID,
                            CountryName = X.CountryName,
                            OrderNumber = X.OrderNumber,
                            total = X.total,
                           Dname = X.Department.Dname

                       });
        query.ToList().Dump();

И это дает мне результат, как показано ниже. Я делаю это правильно? Это лучший подход для этого? - универсальный репозиторий выполняет базовую фильтрацию, сортировку и достаточно ли этого для объединения (несколько свойств навигации (объединений) и фильтрация в сценариях дочерних свойств)?

0 ответов

Другие вопросы по тегам