Лучшая практика для получения отдельной записи от клиента WCF DataService

У меня есть DataService, где T является классом EntityFramework DbContext

Мое клиентское приложение - это приложение Windows Forms со справочником услуг.

Каков наилучший подход для получения единого субъекта от службы?

Этот код работает:

var uri = new Uri("http://localhost/ProductService.svc/");
var context = new ProductContext(uri);
var result = context.Products.Where(x => x.ProductId == 123).FirstOrDefault();

Однако это работает, потому что продукт существует. Это потому, что я могу увидеть результат, выполнив

http://localhost/ProductService.svc/Products(123)

в браузере. Если я хочу запросить продукт 123456, который не существует в базе данных

http://localhost/ProductService.svc/Products(123456)

Я вижу текст ошибки "Ресурс не найден для сегмента" Продукты "

Дело в том, что на стороне клиента я получаю исключение, но я ожидаю FirstOrDefault() вместо этого быть нулевым. Конечно, я мог бы использовать некоторую обработку исключений, но мне интересно, если мой подход правильный или есть лучший способ получить один объект.

1 ответ

Решение

Обновление: нашел решение здесь /questions/18518182/resurs-ne-najden-dlya-segmenta-nedvizhimost/18518193#18518193

Ключ должен установить

context.IgnoreResourceNotFoundException = true;

Сейчас SingleOrDefault() а также FirstOrDefault() вести себя так, как я ожидал. Но мне все еще интересно, если это правильное решение, потому что в браузере

 http://localhost/ProductService.svc/Prodducts(1)

(обратите внимание на опечатку) выдает то же исключение ResourceNotFound

Другие вопросы по тегам