我有一个简单的数据模型由两个实体的WebAPI的OData返回复杂类型
public class product
{
public int ID {get;set;}
public string Name {get;set;}
}
public class supplier
{
public int ID {get;set;}
public string Name {get;set;}
public IEnumerable<product> products {get;set;}
}
的现在,从我的WebAPI的OData控制器我想与他们所有的产品退回供应商。但我似乎无法得到这个工作,它只是返回供应商,并有效地剥离了产品信息。控制器方法是一个简单的Get和GetEntityByKey。 我的配置如下。
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<supplier>("supplier");
modelBuilder.EntitySet<product>("product");
是否有一个配置选项我错过了让它工作?
要在Jen的答案上构建,NuGet的第一个Web API OData版本不支持$ expand,但它目前在我们的夜间版本中可用,并应在下一版本中提供。有关如何访问我们的夜生活的更多信息,请参阅此博客文章:http://blogs.msdn.com/b/henrikn/archive/2012/06/01/using-nightly-asp-net-web-stack- nuget-packages-with-vs-2012-rc.aspx –
感谢您回复我。至少我知道它不是一个配置选项,它的odata本身除去了额外的“产品”信息,而不是将它包含在返回的Json中,就像在非odata WebApi Get中一样。下一个版本是否有发布日期? –
@YoussefMoussaoui我已经获得了每晚构建,但无法获得一个简单的示例工作,请注意我正在使用fiddler composer http:// mywebsite:port/odata/suppler(1)?$ expand = products。 webapi控制器中的代码如下所示:protected override supplier GetEntityByKey(int key) {s = new supplier(){Name =“Test”,ID = 1}; s。products = new list(){new product(){ID = 1,Name =“P1”},new product(){Name =“P2”,ID = 2}}; return s; }' –