如何使用 odata $expand 显示多对多关系的数据?
How to display data from many-to-many relationship using odata $expand?
我有几个数据库表,其中一些表具有多对多关系。我正在使用 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
来显示预期的数据。但是,我无法使用来自 TableD
的 ID 显示来自 TableE
和 TableF
的数据。我不确定要向您展示什么代码,但这是 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
中的值。
我该怎么做?
如果我对你的数据模型的理解是正确的,你想要进行超过 1 级深度的内联扩展。假设 TableD
实体类型具有名为 TableE
和 TableF
的导航属性,将 nested $expand
option 附加到 TableD
,如下所示:
$expand=TableB,TableC,TableD($expand=TableE,TableF)
我有几个数据库表,其中一些表具有多对多关系。我正在使用 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
来显示预期的数据。但是,我无法使用来自 TableD
的 ID 显示来自 TableE
和 TableF
的数据。我不确定要向您展示什么代码,但这是 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
中的值。
我该怎么做?
如果我对你的数据模型的理解是正确的,你想要进行超过 1 级深度的内联扩展。假设 TableD
实体类型具有名为 TableE
和 TableF
的导航属性,将 nested $expand
option 附加到 TableD
,如下所示:
$expand=TableB,TableC,TableD($expand=TableE,TableF)