次のコードは、ViewModel クエリをモデルに変換し、返された結果を PageResult として ViewModel に変換します。これはすべて正常に機能しますが、デフォルト クエリの一部として (または querycontext の一部として最新バージョンを使用して) include を使用しようとすると、OData フォーマッタがおかしくなり、子要素が含まれません。実際に子要素が含まれていることをデバッグして確認しました。これは、ODataController から拡張したコントローラーでのみ発生します (基本的に、ApiController から拡張したコントローラーはすべて正常に動作しますが、OData 形式の結果が必要です)。 最新のナイトリー ビルド (Microsoft.Data.OData 5.5.0.0) も試してみましたが、それでもうまくいきません。 どんな助けでも大歓迎です。
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;
}
}