Подтвердить что ты не робот

Ресурс, не найденный для сегмента 'Property'

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

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

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

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

Любые идеи, что неправильно?

Спасибо

4b9b3361

Ответ 1

Запрос на первичные ключи генерирует исключение, если ключ не существует. Обходной путь заключается в добавлении фиктивного истинного выражения в условие (например: 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

Задайте IgnoreResourceNotFoundException свойство контекста службы true:

svc.IgnoreResourceNotFoundException = true;

Ответ 3

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