当使用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或只是尚未被填充。业主是从VehicleCustomer的链接。

任何想法有什么不对?

由于

有帮助吗?

解决方案

在主键产生查询当键不存在异常。解决方法是在条件添加伪真表达(例如: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子句,只是不提供结果)主键时。我猜想类似的事情是发生在自己。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top