Включить все вторые уровни свойств навигации, используя Reflection, в общий репозиторий, используя EF Core. - PullRequest
0 голосов
/ 26 апреля 2019

Здравствуйте, у меня есть следующие объекты:

public class Area
{
     public ICollection<Indicator> Indicators { get; set; }
}
public class Indicator
{
     public Operator GreenCondition { get; set; }
}
public class Operator
{
     public string Name { get; set; }
}

А в логике у меня есть:

 public Area Get(int id)
        {
            List<Expression<Func<Area, object>>> includes = new List<Expression<Func<Area, object>>>();
            includes.Add(x => x.Indicators);
            includes.Add(x => x.Indicators.Select(i => i.GreenCondition));
            includes.Add(x => x.Managers);


            Area area = repAreas.Get(includes, a => a.Id == id && a.Active);

            return area;
        }

И в моей логике хранилища я имею:

public T Get(IEnumerable<Expression<Func<T, object>>> includes, Func<T, bool> predicate)
        {
            var query = _objectSet.AsQueryable<T>();


           if(!(includes is null))
            {                
                query = includes.Aggregate(query, (current, include) => current.Include(include));
            }

            return query.Where(predicate).FirstOrDefault();
        }

Но когда собирается выполнить обратную строку, выдает ошибку, которая не может выполнить выбранную часть.

По сути, я хочу показать все, что есть в Районе, используя общий вид и отражение.

...