从WCF数据服务客户端获取单个记录的最佳实践

本文关键字:记录 最佳 单个 获取 WCF 数据 服务 客户端 | 更新日期: 2023-09-27 18:17:08

我有DataService,其中T是一个EntityFramework DbContext类

我的客户端应用程序是一个Windows窗体应用程序与服务引用。

从服务中获得单个实体的最佳方法是什么?

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)

我看到一个错误文本' Resource not found for segment 'Products'

问题是,在客户端,我得到一个异常,但我希望FirstOrDefault()为空。当然,我可以使用一些异常处理,但我想知道我的方法是否正确,或者是否有更好的方法来获取单个对象。

从WCF数据服务客户端获取单个记录的最佳实践

更新:找到解决方案https://stackoverflow.com/a/5987733/98491

关键是设置

context.IgnoreResourceNotFoundException = true;

现在SingleOrDefault()FirstOrDefault()的行为就像我期望的那样。但我仍然想知道这是否是正确的决定,因为在浏览器

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

(注意错别字)抛出相同的ResourceNotFound异常