1

Entity Framework 4.1 で WCF Data サービスを使用しています

多対多の関係を持つ2つのテーブルがあります。子の値に基づいてエンティティを取得しようとしています。

Table 1 (Suppliers) -> ID (PrimaryKey) ,Name ,isEnabled ,Timestamp
Table 2 (Categories) -> RGID (PrimaryKey) , Name, etc....

このようなURIを書いてみました。私の目標は、RGID = 3 のカテゴリを持つすべてのサプライヤー (名前とタイムスタンプ) を取得することです。

これまで私はやった

http://localhost/joybaservice/joybadataservice.svc/Categories(3)?$expand=Suppliers

必要なプロパティを選択する作業が残っています。名前 + タイムスタンプ。

ありがとうございました

4

1 に答える 1

0

$select クエリ オプションを使用します。たとえば、展開を使用した上記のクエリで、カテゴリから Name プロパティを取得し、Suppliers から Name プロパティを取得し、Suppliers から Timestamp プロパティを取得するとします。クエリは次のようになります。

~/Categories(3)?$expand=Suppliers&$select=Name,Suppliers/Name,Suppliers/Timestamp

クライアントで LINQ (WCF Data Services クライアント ライブラリを使用) を使用してこれを行う場合は、AddQueryOption を使用して $select (またはその他の $ クエリ オプション) を追加することはできません。代わりに、クエリの意図を表現する必要があります。 LINQ を使用します (これが結局の目的です)。たとえば、上記は次のようになります (ただし、クラスのレイアウトによって異なります)。

ctx.Categories
  .Where(c => c.ID == 3)
  .Select(c => new Category()
    {
      Name = c.Name,
      Suppliers = c.Suppliers.Select(s => new Supplier()
        {
          Name = s.Name,
          Timestamp = s.Timestamp
        })
    })
于 2012-05-30T11:49:13.433 に答える