ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-从WCF DataService Client获取单个记录的最佳实践

2019-11-23 06:07:16  阅读:341  来源: 互联网

标签:odata wcf c wcf-data-services wcf-data-services-client


我有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://stackoverflow.com/a/5987733/98491

关键是要设定

context.IgnoreResourceNotFoundException = true;

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

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

(注意输入错误)引发相同的ResourceNotFound异常

标签:odata,wcf,c,wcf-data-services,wcf-data-services-client
来源: https://codeday.me/bug/20191123/2065789.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有