2016-04-19 5 views
1

私はいくつかのデータベーステーブルを持っていますが、そのうちのいくつかは多対多の関係を持っています。私はwebapiとodataを使ってデータベースからデータを取得しています。例えば:

今 ​​

、私はODATAコントローラを使用していているので、私はそれが予想されるデータを表示する/odata/Claims?$expand=TableA,TableB,TableC,TableDを使用することができます。ただし、のIDを使用してTableETableFのデータを表示することはできません。私はあなたを表示どのようなコードわからないんだけど、ここで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を行う際にデータが現れるかで、代わりに私だけTableERefIdTableFRefIdを表示するので、私はTableETableF内の値を見てみたいです。

どうすればいいですか?

+0

FYI、上記に示したJSONにおける単一 'TableERefId' 1があることを示唆しています'TableD'と' TableE'です。 'TableD'と' TableF'でも同じです。 – lencharest

答えて

2

データモデルが正しく理解されていれば、1レベル以上のインライン展開が必要です。次のようにnested $expand optionTableDとを追加し、TableDエンティティタイプは、TableETableF名前ナビゲーション特性を有すると仮定すると:との間の1の関係:

$expand=TableB,TableC,TableD($expand=TableE,TableF) 
+0

これは私が必要とするものです。私は '$ expand'がこのように使われるかもしれないことは知らなかった。これは私にとって重要な教訓です。ありがとうございました。 – user1828605

関連する問題