题
当使用ADO.Net数据服务客户端通过调用LoadProperty
刷新的实体:
ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...
如果该属性null
它抛出在服务器上的错误
错误:抛出异常:System.Data.Services.DataServiceException: 未发现资源的部分“所有者”。在 System.Data.Services.RequestDescription.GetSingleResultFromEnumerable(段信息 段信息)在 System.Data.Services.DataService1.CompareETagAndWriteResponse(RequestDescription 说明,ContentFormat responseFormat,IDataService DataService的)结果 在 System.Data.Services.DataService1.SerializeResponseBody(RequestDescription 的描述中,IDataService DataService的)在 System.Data.Services.DataService1.HandleNonBatchRequest(RequestDescription 描述)在System.Data.Services.DataService`1.HandleRequest()
问题是客户不知道该属性是否是null
或只是尚未被填充。业主是从Vehicle
到Customer
的链接。
任何想法有什么不对?
由于
解决方案
在主键产生查询当键不存在异常。解决方法是在条件添加伪真表达(例如:1 == 1个&& item.Id == XXX)
。如果没有虚设表达的ADO.NET请求是:
HTTP://localhost//test.svc/Role(XXX)
使用虚设状态下,要求是:
HTTP://localhost//test.svc/Role()?$filter=true和(Id当量1)
预期的行为(空返回)是在第二种情况下是正确的。
其他提示
设置 IgnoreResourceNotFoundException 服务上下文的属性为true:
svc.IgnoreResourceNotFoundException = true;
我已经接收到“未找到资源为段“属性”错误也。矿似乎是在where子句中,我希望通过主键。我已经发现了一些资源说,这将抛出一个错误(使用FirstOrDefault甚至当())使用不存在的(相对于其他where子句,只是不提供结果)主键时。我猜想类似的事情是发生在自己。