Ресурс не найден для сегмента 'Недвижимость' - PullRequest
15 голосов
/ 03 февраля 2009

При использовании клиента служб данных ADO.Net для обновления сущности путем вызова LoadProperty:

ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...

Выдает ошибку на сервере, если свойство null

Ошибка: выброшено исключение: System.Data.Services.DataServiceException: Ресурс не найден для сегмента «Владелец». в System.Data.Services.RequestDescription.GetSingleResultFromEnumerable (SegmentInfo сегментИнфо) в 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.

Есть идеи, что случилось?

Спасибо

Ответы [ 3 ]

33 голосов
/ 13 мая 2011

Установить IgnoreResourceNotFoundException свойство контекста службы в true:

svc.IgnoreResourceNotFoundException = true;
18 голосов
/ 06 декабря 2009

Запросы по первичным ключам генерируют исключение, когда ключ не существует. Обходной путь должен добавить фиктивное истинное выражение в условие (например: 1 == 1 && item.Id == XXX).

Без фиктивного выражения запрос ADO.NET:

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

При фиктивном условии запрос:

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

Ожидаемое поведение (возвращается ноль) во втором случае корректно.

3 голосов
/ 10 февраля 2009

Я также получил сообщение об ошибке «Ресурс не найден для сегмента« Свойство »». Похоже, что в предложении where я смотрю по первичному ключу. Я нашел некоторые ресурсы, в которых говорится, что он выдаст ошибку (даже при использовании FirstOrDefault ()) при использовании первичного ключа, который не существует (в отличие от других предложений where, которые просто не дают результатов). Я предполагаю, что подобное происходит с вами самим.

...