未找到“属性”细分的资源
使用ADO.Net Data Services客户端通过调用LoadProperty
来刷新实体时:
ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...
如果属性为null
它会在服务器上抛出错误
错误:exception抛出:System.Data.Services.DataServiceException:找不到段’Owner’的资源。 System.Data.Services.DataService1.CompareETagAndWriteResponse上的System.Data.Services.RequestDescription.GetSingleResultFromEnumerable(SegmentInfo segmentInfo)(RequestDescription描述,ContentFormat responseFormat,IDataService dataService)
System.Data.Services.Data上的System.Data.Services.DataService1.SerializeResponseBody(RequestDescription描述,IDataService dataService)处于System.Data.Services.DataService.1.HandleRequest()的System.Data.Services.DataService1.HandleNonBatchRequest(RequestDescription描述)
问题是客户端不知道属性是否为null
或者尚未填充。 财产所有者是从Vehicle
到Customer
的链接。
有什么想法有什么不对吗?
谢谢
当密钥不存在时,查询主键会生成exception。 解决方法是在条件中添加一个虚拟真实表达式(例如:1 == 1 && item.Id == XXX)。
没有虚拟表达式,ADO.NET请求是:
http://localhost//test.svc/Role(XXX)
对于虚拟条件,请求是:
http://localhost//test.svc/Role()?$filter=true和(Id eq 1)
在第二种情况下,预期的行为(返回null)是正确的。
将服务上下文的IgnoreResourceNotFoundException属性设置为true:
svc.IgnoreResourceNotFoundException = true;
我收到了“找不到段’属性’的资源”错误。 我似乎是在我通过主键查找的where子句中。 我发现一些资源说它会在使用不存在的主键时抛出错误(即使在使用FirstOrDefault()时)(与其他不提供结果的子句相反)。 我猜你自己也会发生类似的事情。