Я использую 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
существует.