Лучшая практика для получения отдельной записи от клиента 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