私はどのように使うのですか。ADO.Netデータサービスのためのサービス操作の「インクルード」
-
20-08-2019 - |
質問
私はADO.Net Data Servicesを使用しているとエンティティ文にいくつかのLINQの結果を返す終わるサービスオペレーションを持っています。それらのLINQ文の一部として.INCLUDE(「NavProp」)は、サブオブジェクトを含むことがあります。このサービスの操作を実行しているとき、インクルード拡大している返すように表示されません。誰もがいずれかの理由があるか、どのようにそれを修正するために知っていますか?そのサブオブジェクトを展開するサービス操作への呼び出しにキーワードを追加することは可能ですか? (私は$は=サブオブジェクトを拡張しようとしたが、それは動作していないよう - 不正な要求)
。私はどちらかで終わるしたいと思います: また、.INCLUDEを返すサービス操作でLINQ文の1)の構文(私はこれが不可能であるかなり確信している)。
something like:
(from c in context.MyObj.Include("SubObj")
select c).ToList()
(this works inside the service operation, but doesn't provide the SubObj on the client side)
または
サブオブジェクトを展開するサービス操作要求の2)構文
something like: http://localhost/MyDataService/MyDataService.svc/ServiceOp1?param1=234$expand=SubObj (note: this doesn't work)
解決
に見えます。サービスオペレーションはプリミティブ型またはエンティティのいずれかを返します。カスタムタイプまたは拡張エンティティを含む任意の他のタイプは、サービス操作から戻すことはできません。ちょうどサービス操作から項目(複数可)を返し、含まれている場合、次に/ 1は、目的のオブジェクトの拡張のために「LoadProperty」を呼び出す必要があり、クライアント側で必要とされている拡張する必要があり、この1に対処するために(注:これは当たりのヒット別のデータベースを意味し、 LoadPropertyコール)。
他のヒント
この問題でMSを電子メールで送信したので、解決策は、サービス操作のURIに展開するクエリオプションを使用することです。たとえば、
.../<ServiceOperationName>.svc?$expand=<Property1Name>,<Property2Name> ...
Service Operation: GetCustomer
Relationship Property to load: Address
Uri: .../<GetCustomer>.svc?$expand=Address
この情報がお役に立てば幸いです。