我第一次使用OData并拥有一个具有以下属性的模型实体:
public IEnumerable<string> Genres { get; set; }
public IEnumerable<string> GenresFiltered { get; set; }
当我进行Web调用以从模型中检索数据时,我收到以下消息:
&#39;该物业&#39;类型&#39;在类型&#39; xxxx&#39;不是有效的财产。不支持其类型是基元或复杂类型集合的属性
有没有办法解决此错误,以显示Odata中的字符串列表?
答案 0 :(得分:1)
怪异。我写了一个小测试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"
]
}
]
}
希望这可以提供帮助。