Entity Framework включает дочерние элементы с фильтром - PullRequest
0 голосов
/ 07 апреля 2020

В настоящее время я работаю со схемой, которая содержит сущности, каждая из которых содержит атрибуты, и каждая из них содержит одну спецификацию типа. Я хочу извлечь список, который удовлетворяет определенному требованию атрибута c, имеющему тип поиска и спецификацию c.

Я пробовал это до сих пор

schemaRepository
                .Many()
                .OrderByDescending(x => x.Version)
                .SelectMany(x => x.Entities
                    .Where(x => x.Attributes
                        .Any(y => y.Type == DataType.Lookup &&
                                  y.TypeSpecification.EntityInternalName == "Weather")));

Возвращает список объектов, которые удовлетворяют требованию, но ни один из объектов не имеет никаких атрибутов?

Как мне также включить это в запрос?

Я пытался добавить в конце команду include,

var entitiesWithLookupsTolookupEntityName = schemaRepository
            .Many()
            .OrderByDescending(x => x.Version)
            .Include(x=> x.Entities)
            .ThenInclude(x=>x.Attributes)
            .ThenInclude(x=>x.TypeSpecification)
            .SelectMany(x => x.Entities
                .Where(x => x.Attributes
                    .Any(y => y.Type == DataType.Lookup &&
                              y.TypeSpecification.EntityInternalName == "Weather")));

, но это только все атрибуты и т. д. c. игнорируя условие Any для атрибутов ..

Как обойти это?

Я попытался немного его разделить

        var entitiesWithLookupsTolookupEntityName = schemaRepository
            .Many()
            .OrderByDescending(x => x.Version)
            .Take(1)
            .SelectMany(x => x.Entities
                .Where(y => y.Attributes
                    .Any(z => z.Type == DataType.Lookup && z.AttributeTypeSpecification.EntityInternalName == lookupEntityName))).AsEnumerable();

        IList<ReferenceView> output =  new List<ReferenceView>();

        foreach (var entity in entitiesWithLookupsTolookupEntityName)
        {
            var attribute = schemaRepository.Many().OrderByDescending(x => x.Version).First().Entities
                .Where(x => x.InternalName == entity.InternalName);

        }

, но здесь я получаю исключение каждый раз для l oop

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...