Ресурс не найден для сегмента 'Недвижимость'

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

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

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

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

Решение

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

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

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

С условным условием запрос:

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

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

Установите для свойства IgnoreResourceNotFoundException контекста службы значение true:

svc.IgnoreResourceNotFoundException = true;

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

Другие вопросы по тегам