我有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()改为null.当然,我可以使用一些异常处理,但是我想知道我的方法是否正确,或者是否有更好的方法来获取单个对象.
解决方法:
更新:在这里找到解决方案https://*.com/a/5987733/98491
关键是要设定
context.IgnoreResourceNotFoundException = true;
现在SingleOrDefault()和FirstOrDefault()的行为就像我期望的那样.但是我仍然想知道这是否是正确的决定,因为在浏览器中
http://localhost/ProductService.svc/Prodducts(1)
(注意输入错误)引发相同的ResourceNotFound异常