我有一个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。
答案 0 :(得分:1)
试试这个:
http://localhost:51823/api/values?$filter=Name eq 'Elf'&$inlinecount=allpages
要获取元数据信息,请将odata = fullmetadata添加到Accept标头,例如:
Accept:application/json;odata=fullmetadata