如何使用OData原语或复杂类型
本文关键字:复杂 类型 原语 何使用 OData | 更新日期: 2023-09-27 18:18:49
我第一次使用OData,并具有以下属性的模型实体:
public IEnumerable<string> Genres { get; set; }
public IEnumerable<string> GenresFiltered { get; set; }
当我通过web调用从模型中检索数据时,我得到以下消息:
'类型'xxxx'上的属性' types '不是一个有效的属性。不支持类型为原语集合或复杂类型的属性
是否有一种方法来解决这个错误,以显示Odata中的字符串列表?
奇怪。我写了一个小的测试web api odata服务,它工作。代码如下:
WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Foo>("Foos");
config.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
}
}
模型类
public class Foo
{
public string ID { get; set; }
public IEnumerable<string> Genres { get; set; }
}
控制器类
public class FoosController : ODataController
{
// GET odata/Foos
[EnableQuery]
public IHttpActionResult Get()
{
return Ok(FakeData.GetFoos().AsQueryable());
}
}
然后我尝试http://localhost:37312/odata/Foos
,结果是
{
"@odata.context": "http://localhost:37312/odata/$metadata#Foos",
"value": [
{
"ID": "1",
"Genres": [
"aaa",
"bbb"
]
},
{
"ID": "2",
"Genres": [
"ccc"
]
}
]
}