Microsoft.OData.Client $expand не заполняет модель

Я использую Microsoft.OData.Client на основе образца приложения Microsoft.
Вот мой простой контроллер WebAPI:

    [Route("test")]
    [HttpGet]
    public IHttpActionResult Test()
    {
        var context = _dynamicsContextFactory.CreateContext();
        // adding this had no effect // context.MergeOption = MergeOption.AppendOnly;
        // adding this had no effect // context.MergeOption = MergeOption.OverwriteChanges;
        // adding this had no effect // context.MergeOption = MergeOption.NoTracking;
        // adding this had no effect // context.MergeOption = MergeOption.PreserveChanges;
        var result = context.SalesOrderHeadersV2.Expand("SalesOrderLines").Take(1).ToList();
        return Ok(result);
    }

Клиент генерирует правильный URL.https://example.com/data/SalesOrderHeadersV2?$top=1&$expand=SalesOrderLinesЯ вижу в скрипте свойство SalesOrderLines, возвращаемое в JSON.

Однако, когда я проверяю переменную результата (или просматриваю вывод), свойства SalesOrderLines нет. Таким образом, строки заказа не были отображены в моем объекте результата из данных, загруженных из источника oData.

Важное примечание: я использую EDMXTrimmer, чтобы уменьшить количество объектов в моем клиенте, может ли это быть проблемой, если мне не хватает присоединяемого объекта? (Кажется маловероятным, что в этом случае есть присоединяющаяся сущность)

Подсказка?
Когда я пытаюсь изменить эту строку:

var result = context.SalesOrderHeadersV2.Expand(x=>x.SalesOrderLines).Take(1).ToList();

Он не будет компилироваться, потому что 'SalesOrderHeaderV2' does not contain a definition for 'SalesOrderLines' ...
Примечание: context.SalesOrderLines существует.

1 ответ

Решение

Проблема заключалась в том, что EDMXTrimmer удалил свойства навигации.
EDMXTrimmer с тех пор исправлен.

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