Web API 2响应中缺少Odata元数据格式

时间:2014-11-20 05:42:54

标签: c# odata asp.net-web-api2

我有一个web api 2项目,并希望将模型公开为Odata服务,以便可以查询。

这是我所做的设置: 在WebApiConfig.Register()我有

config.AddODataQueryFilter();

以下代码位于值控制器

// GET api/values
[EnableQuery (PageSize=1)]
public IQueryable<TestProduct> Get()
{
    var str = new List<TestProduct>
    {
        new TestProduct {Name = "Dark", Value = "Lord"},
        new TestProduct {Name = "Dark", Value = "Elf"}
    };
    var hello = str.AsQueryable();
    return hello;
}

当我查询

http://localhost:51823/api/values?$filter=Name eq 'Elf'

我得到的结果是:

[
    {
        "Name": "Dark",
        "Value": "Elf"
    }
]

我错过了$odata.metadata属性和inlinecount属性。如何将其添加到响应中。 理想情况下,我会寻找:

    [
 "odata.metadata":"http://localhost:43111/api/$metadata#TestProducts",
            "odata.count":"1",
"value":
        {
            "Name": "Dark",
            "Value": "Elf"
        }
    ]

我不打算使用EF。

1 个答案:

答案 0 :(得分:1)

试试这个:

http://localhost:51823/api/values?$filter=Name eq 'Elf'&$inlinecount=allpages

要获取元数据信息,请将odata = fullmetadata添加到Accept标头,例如:

Accept:application/json;odata=fullmetadata