Как использовать. «Включить» в операции службы для служб данных ADO.Net - PullRequest
2 голосов
/ 30 января 2009

Я использую службы данных ADO.Net, и у меня есть операция обслуживания, которая в итоге возвращает результаты некоторых операторов linq для операторов. В составе этих операторов Linq есть .Include («NavProp») для включения подобъекта. При запуске этой сервисной операции она не возвращает расширенное значение «Включить». Кто-нибудь знает, почему это так или как это исправить? Можно ли добавить ключевое слово в вызове к сервисной операции, чтобы развернуть этот подобъект? (Я пробовал $ expand = subObject, но, похоже, это не сработало - неправильный запрос).

Я бы хотел в конечном итоге либо: 1.) синтаксис оператора linq в сервисной операции, который также возвращает .Include (я уверен, что это невозможно)

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)

Ответы [ 2 ]

1 голос
/ 22 июля 2009

Получив по электронной почте MS по этому вопросу, решение состоит в том, чтобы использовать опцию расширения запроса в URI операции службы. Например,

.../<ServiceOperationName>.svc?$expand=<Property1Name>,<Property2Name> ...

Service Operation: GetCustomer
Relationship Property to load: Address
Uri: .../<GetCustomer>.svc?$expand=Address

Надеюсь, это поможет.

1 голос
/ 11 февраля 2009

Похоже, что в настоящее время это невозможно (.net 3.5 SP1). Сервисные операции будут возвращать только примитивные типы или сущности. Любой другой тип, включая пользовательские типы или расширенные объекты, не может быть возвращен из операции службы. Чтобы справиться с этим, нужно просто вернуть элемент (ы) из операции сервиса, а затем, если на стороне клиента необходимо включить / расширить, необходимо вызвать «LoadProperty» для желаемого расширения объекта (примечание: это означает, что другое попадание в базу данных Вызов LoadProperty).

...