Microsoft.OData.Client $ expand не заполняет модель - PullRequest
0 голосов
/ 07 октября 2019

Я использую 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 Я вижу в fiddler свойство 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 Ответ

1 голос
/ 08 октября 2019

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

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