如何使用OData原语或复杂类型

时间:2014-08-20 18:09:37

标签: c# odata

我第一次使用OData并拥有一个具有以下属性的模型实体:

public IEnumerable<string> Genres { get; set; }
public IEnumerable<string> GenresFiltered { get; set; }

当我进行Web调用以从模型中检索数据时,我收到以下消息:

&#39;该物业&#39;类型&#39;在类型&#39; xxxx&#39;不是有效的财产。不支持其类型是基元或复杂类型集合的属性

有没有办法解决此错误,以显示Odata中的字符串列表?

1 个答案:

答案 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"
        ]
    }
]

}

希望这可以提供帮助。