Как избежать проблемы выбора n + 1 во вложенных объектах - PullRequest
0 голосов
/ 31 октября 2019

Учитывая следующий код:

var persons = context.PERSONs.Select(
    x =>
    new
    {
        personId = x.PERSON_ID,
        personName = x.PERSON_NAME,
        items = x.ITEMs.Select(
            y =>
            new
            {
                itemID = y.ITEM_ID,
                itemName = y.ITEM_NAME,
                properties = y.PROPERTies.Select(
                    z =>
                    new
                    {
                        z.PROPERTY_ID,
                        z.PROPERTY_NAME
                    }
                )
            }
        )
    }
).ToList();

Как можно избежать проблем с выбором n + 1? Пробовал .Include ("ITEMs.PROPERTies"), но это не помогло. Ожидается один запрос с двумя левыми внешними объединениями.

Примечание. Хотелось бы получить общий ответ, потому что я работаю над фоном OData, где сложно создавать запросы для каждого объекта вручную

-edit-

База данных: MS SQL Server

Версия Entity Framework: 6

Может подтвердить, что все свойства являются простыми сопоставленными свойствами (целочисленные и строковые значения, функции и функции не вычисляютсязначения)

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