Следующий код преобразует запрос ViewModel в модель и затем преобразует возвращаемый результат обратно в ViewModel как PageResult. Все это прекрасно работает, но когда я пытаюсь использовать include, как часть моего запроса по умолчанию (или даже с последней версией как часть querycontext), формамер OData играет смешно и не включает дочерние элементы. Я отлаживал и подтверждал, что на самом деле он содержит дочерние элементы. Это происходит только для контроллеров, которые я расширил с ODataController (так что в основном для тех, которые расширены из ApiController, все работает отлично, но мне нужны результаты в формате OData). Обратите внимание, что я также пробовал с помощью новейшей ночной сборки (Microsoft.Data.OData 5.5.0.0), и все же это не работает для меня. Любая помощь будет высоко оценена.Форматирование WebApi OData не работает для дочерних элементов
public class ProductsController : ODataController
{
APPContext context = new APPContext();
public PageResult<ProductViewModel> Get(ODataQueryOptions QueryOptions)
{
EdmModel model = new EdmModel();
ODataQueryContext queryContext = new ODataQueryContext(model.GetEdmModel(), typeof(Product));
var mappedQuery = new ODataQueryOptions(queryContext, QueryOptions.Request);
var results = new List<ProductViewModel>();
foreach (var result in mappedQuery.ApplyTo(this.context.Serials.Include("Status").Include("Category")))
{
AutoMapper.Mapper.CreateMap(result.GetType(), typeof(ProductViewModel));
results.Add(AutoMapper.Mapper.Map<ProductViewModel>(result));
}
PageResult<ProductViewModel> pr = new PageResult<ProductViewModel>(results.AsEnumerable<ProductViewModel>(), mappedQuery.Request.GetNextPageLink(), mappedQuery.Request.GetInlineCount());
return pr;
}
}
** или даже с последней версией как часть querycontext ** На самом деле я имел в виду $ expand здесь. Я заранее извиняюсь за то, что не был конкретным. –