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 с тех пор исправлен.