未找到“属性”细分的资源

时间:2009-02-03 01:45:26

标签: c# wcf-data-services

使用ADO.Net Data Services客户端通过调用LoadProperty

来刷新实体
ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...

如果属性为null

,则会在服务器上抛出错误
  

错误:抛出异常:System.Data.Services.DataServiceException:   未找到“所有者”细分的资源。在   System.Data.Services.RequestDescription.GetSingleResultFromEnumerable(段信息   segmentInfo)at   System.Data.Services.DataService1.CompareETagAndWriteResponse(RequestDescription   description,ContentFormat responseFormat,IDataService dataService)
  在   System.Data.Services.DataService1.SerializeResponseBody(RequestDescription   描述,IDataService dataService)at   System.Data.Services.DataService1.HandleNonBatchRequest(RequestDescription   System.Data.Services.DataService`1.HandleRequest()

问题是客户端不知道该属性是null还是尚未填充。酒店所有者是从VehicleCustomer的链接。

任何想法有什么不对?

由于

3 个答案:

答案 0 :(得分:33)

将服务上下文的IgnoreResourceNotFoundException属性设置为true:

svc.IgnoreResourceNotFoundException = true;

答案 1 :(得分:18)

当密钥不存在时,查询主键会生成异常。解决方法是在条件中添加一个虚拟真实表达式(例如:1 == 1&& item.Id == XXX)。

没有虚拟表达式,ADO.NET请求是:

  

http://localhost//test.svc/Role(XXX)

对于虚拟条件,请求为:

  

http://localhost//test.svc/Role()?$filter=true和(Id eq 1)

在第二种情况下,预期的行为(返回null)是正确的。

答案 2 :(得分:3)

我收到了“找不到段'属性'的资源”错误。我似乎是在我通过主键查找的where子句中。我发现一些资源说它会在使用不存在的主键时抛出错误(即使在使用FirstOrDefault()时)(与其他不提供结果的子句相反)。我猜你自己也会发生类似的事情。