我有一些数据库表,其中一些数据库表具有多对多关系。我正在使用webapi和odata从数据库中获取数据。例如:
TableA ---> TableB (one to one)
TableA ---> TableC (one to one)
TableA ---> TableD (one to one)
TableE --> TableD ---> Table F (many-to-many)
现在,由于我正在使用odata控制器,我可以使用/odata/Claims?$expand=TableA,TableB,TableC,TableD
来显示预期的数据。但是,我无法使用TableE
中的ID显示来自TableF
和TableD
的数据。我不确定要向您展示哪些代码,但这是GET
方法
[EnableQuery(AllowedQueryOptions = System.Web.OData.Query.AllowedQueryOptions.All)]
public IQueryable<TableA> Get()
{
return dbContext.DeniedClaims.AsQueryable();
}
有没有什么方法可以使用odata在同一查询中显示TableE和TableF中的数据?
这是我执行$expand
{
"@odata.context":"http://localhost:58891/odata/$metadata#TableA","value":[
{
// some values,
"Id": 1, // blah blah
"TableB":{
"Id":1,"FirstName":"Test","LastName":"Test",
},"TableC":{
"Id":1,
},"TableD":{
"Id":1,"TableERefId":1,"TableFRefId":1
}
}
}
注意TableD
,我希望看到TableERefId
和TableFRefId
中的值,而不是只显示TableE
和TableF
。
我该怎么做?
答案 0 :(得分:2)
如果我正确理解您的数据模型,您希望深度超过1级的内联扩展。假设TableD
实体类型具有名为TableE
和TableF
的导航属性,请将nested $expand
option附加到TableD
,如下所示:
$expand=TableB,TableC,TableD($expand=TableE,TableF)