Как выполнить (материализовать) вызов запроса LINQ для ServiceOperation, возвращающий только строковое значение - PullRequest
0 голосов
/ 06 декабря 2011

Впереди, парень с клавиатуры здесь запоздал в отделе сна. Но также немного отчаянно.

У меня есть метод Data-service [WebGet], настроенный так.

[WebGet]
public string Finalize(string PayloadObject, string CltUUID, string Comment){..}

Возвращает простую строку, в зависимости от результата выполнения внутри. Это работает нормально.

Я называю это так

var res = base.ServiceRef.CreateQuery<DBcontext>("Finalize")
.AddQueryOption("PayloadObject", string.Format("'{0}'", builder.ToString()))
...

Как мне заставить этот запрос материализоваться? Обычно используют res.ToList (), ToArray () или .First (). Если я это сделаю, я получу исключение. Использование .ToString () не выполняет запрос, просто возвращает URL.

Запрос работает, если я разбиваю строку после этого кода и нажимаю «View ...» в отладчике, запрос выполняется, метод запускается на сервере.

Кажется, я просто не могу его запустить, что мне не хватает ?? кроме сна

Спасибо за любые указатели

С уважением, Андреас

1 Ответ

0 голосов
/ 06 декабря 2011

Я думаю, вы не можете использовать CreateQuery для вызова операции, возвращающей одно значение. Вы должны использовать Выполнить вместо . В документации MSDN также упоминается, что операции, возвращающие примитивные типы , не могут использовать QueryOption, что имеет смысл, поскольку параметр запроса используется для определения запроса для IQueryable. Если вам нужно передать параметры, попробуйте использовать общий подход WCF REST для указания шаблона в WebGet, а на стороне клиента используйте URI с правильно включенными параметрами.

Вы также можете попытаться использовать SingleResultAttribute в своей сервисной операции.

...