Как отфильтровать и включить детей с помощью Z.EntityFramework - PullRequest
0 голосов
/ 20 сентября 2019

Запрос ниже использует Z.EntityFramework.Plus.EF6 для фильтрации дочерних элементов.Его фильтрация и включение сущности AssetXref правильно, однако результат не может включать Child.Parent отношение сущностей

   var result = await _repository.GetQuery<Assets>()
                      .IncludeFilter(x => x.AssetsXRef
                                        .Where(y => y.Child.Perent.ParentID == parentID)
                                        .Select(y => y.Child.Perent)
                                    )
                     .Where(x => x.Active == true)
                     .ToListAsync();

Я также пытался

   var result = await _repository.GetQuery<Assets>()
                      .IncludeFilter(x => x.AssetsXRef
                                        .Where(y => y.Child.Perent.ParentID == parentID)                                        
                                    )
                     .Include(x=>x.AssetsXRef.Select(y=>y.Child.Parent))
                     .Where(x => x.Active == true)
                     .ToListAsync();

1 Ответ

0 голосов
/ 27 сентября 2019

IncludeFilter несовместимо с Include.Вам нужно использовать IncludeFilter полностью, даже если нет фильтра

Кроме того, вы всегда должны использовать полный родительский фильтр для дочернего элемента

Вот пример:

var result = await _repository.GetQuery<Assets>()
                     .IncludeFilter(x => x.AssetsXRef.Where(y => y.Child.Perent.ParentID == parentID))
                     // Might be SelectMany
                     .IncludeFilter(x => x.AssetsXRef.Where(y => y.Child.Perent.ParentID == parentID).Select(y=>y.Child.Parent))
                     .Where(x => x.Active == true)
                     .ToListAsync();
...