小编Rol*_*fvm的帖子

WebApi OData实体集/密钥/导航/密钥支持

我正在研究在WebApi中使用odata.到目前为止这么好,我喜欢它比wcf数据服务更灵活.

但是当我尝试在模型中使用虚拟IQueryable属性时遇到问题.

所以例如我有这些模型类:

public class MainItem
{
    public int Id { get; set;}
    public virtual IEnumerable<SubItem> SubItems { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

而我的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));
    }
}
Run Code Online (Sandbox Code Playgroud)

我在以下网址上得到了正确的结果:/ odata/MainItems/odata/MainItems(1)/ odata/MainItems(1)/ SubItems

但当我尝试做/ odata/MainItems(1)/ SubItems(1)

我收到此错误此服务不支持"〜/ entityset/key/navigation/key"形式的OData请求

我很乐意将此调用以及/ odata/MainItems(1)/ SubItems重定向到SubItemsController.

我可以通过制作一个自定义的ODataPathHandler来做到这一点,但这不是正确的做法.

.net odata c#-4.0 asp.net-web-api

5
推荐指数
1
解决办法
6654
查看次数

标签 统计

.net ×1

asp.net-web-api ×1

c#-4.0 ×1

odata ×1