0

Web API を使用して、メタデータと共にContrat EF Entity を返します。

Contractエンティティには、 Personエンティティへの外部キーを保持する PersonId プロパティがあります。それは物事が複雑になるところです。

Personエンティティを取得するには、WCF サービスを呼び出す必要があります。このサービスは、エンティティ フレームワークを使用してエンティティを取得しません。実際、Personエンティティは Oracle データベースに格納されています。

次に、クライアント側で、そのPersonエンティティをContractエンティティに割り当てる必要があります。Contractモデルを拡張し、 Person型のプロパティを追加する必要があると思います。

Edmunds のサンプルを試してみましたが、これは私がやろうとしていることに近いようです。

クライアントから直接 WCF サービスを呼び出すつもりはありません。代わりに、Web API サービスで GetPerson メソッドを呼び出します。これにより、WCF サービスが呼び出されます。

それで、私の質問は: Web API サービスにアクセスできるので、メタデータと共に IQueryable を返そうとするべきですか (私には難しいように聞こえます)、それとも単純に JSON データを返して Edmunds サンプルの方法に進むべきですか?

どちらが実装しやすいでしょうか?

4

1 に答える 1

1

Edmunds の例では、制御できない HTTP サービスに対するクライアント側のクエリに焦点を当てています。

この場合、WCF サービスへのサイドトリップを含め、制御するサーバー上ですべてを実行したいようです。それは私の好みでもあります...その判断を下すために必要な詳細はわかりませんが.

Person単一の を取得するときに関連のみが必要な場合は、Web API アクション メソッドが完全にサーバー上で構成されたグラフContractを返すようにすると思います ( WCF サービスを介してサーバー上で取得したものを含む)。ContractPerson

しかし、1 回の呼び出しで多数のContractエンティティ (それぞれが関連するエンティティで拡張) を必要とするクライアントのことを考えているかもしれません。Personメソッドの装着について尋ねると、これはあなたが意味することIQueryableですか?

もしそうなら、関連オブジェクトを取得するためのサイドトリップを使用して、これらを完全にサーバー上で構成し、クライアントがフィルタリングできるようにPerson、結果のコレクションを としてキャストすることを検討します。IQueryableうーん。IQueryableそれは賢明ではないと思います。IEnumerableおそらくより良いです。一部のフィルタリング値を Web API メソッドに渡すこともできます (「 」を参照EntityQuery.withParameters)。

于 2013-04-30T21:02:54.297 に答える