我正在研究在WebApi中使用odata。到目前为止这么好,我喜欢那种更加灵活的wcf数据服务。WebApi OData实体集/键/导航/键支持
但是,当我尝试在模型中使用虚拟IQueryable属性时遇到问题。
因此,例如,我有这些模型类:
public class MainItem
{
public int Id { get; set;}
public virtual IEnumerable<SubItem> SubItems { get; set;}
}
而且我MainItemsController看起来像这样
public class MainItemsController : EntitySetController<MainItem, int>
{
[Queryable]
public override IQueryable<MainItem> Get()
{
return SomeMainItemIQueryable();
}
public override GetEntityByKey(int key)
{
return SingleMainItem(key);
}
[Queryable]
public IQueryable GetSubItems(int key)
{
return SomeSubItemIQueryable(SingleMainItem(key));
}
}
我得到以下网址的正确的结果: /的OData/MainItems /OData的/ MainItems(1) /odata/MainItems(1)/ SubItems
但是,当我尝试做 /的OData/MainItems(1)/子项(1)
我得到这个错误 此服务不支持的格式 '〜/ EntitySet的/键/导航/键'
我会的OData请求喜欢将此调用重定向到/ odata/MainItems(1)/ SubItems到SubItemsController。
我可以通过制作一个自定义的ODataPathHandler来做到这一点,但是这并不像这样做的正确方式。
非常感谢! – Rolfvm