【发布时间】:2017-12-27 10:24:55
【问题描述】:
我已经从 EF 6 模型设置了 OData v4 控制器。使用生成的代码时一切正常。
对于将在下拉列表中引用的某些对象,我想限制发送的数据,因此 DTO 似乎是最好的方法。所以我现在有了一个控制器,可以正常处理普通对象,但是一旦我在自定义路由上使用 DTO,我就会遇到麻烦。
我使用了下面的代码,它正确地生成了 DTO 集合,但是当它返回数据时,我最终在客户端上出现 406 Not Acceptable 状态。
关于哪里出了问题有什么建议吗?
作为旁注,我想要提供一个完整的和一个缩小的对象的策略是最好的方法吗(就标准而言)?
// GET: odata/AMO_GeneralStateTypes(5)/AMO_GeneralStates_Basic
[EnableQuery]
[Route("odata/AMO_GeneralStateTypes({key})/AMO_GeneralStates_Basic")]
public IQueryable<AMO_GeneralStatesDTO> GetAMO_GeneralStates_Basic([FromODataUri] int key)
{
return db.AMO_GeneralStateTypes
.Where(m => m.StateTypeId == key)
.SelectMany(m => m.AMO_GeneralStates.Select(n => new AMO_GeneralStatesDTO()
{
StateId = n.StateId,
StateGuid = n.StateGuid,
ParentStateId = n.ParentStateId,
State = n.State,
TypeId = n.TypeId,
SortOrder = n.SortOrder,
Enabled = n.Enabled
}));
}
【问题讨论】:
标签: c# entity-framework rest odata