ODATA EXPAND не работает должным образом - PullRequest
3 голосов
/ 10 января 2012

У меня есть URL-фильтр, например: t1? $ Filter = ID eq 1 & $ expand = t2 / t3 / t4 / t5 / t6 .

Теперь, когда я запускаю этот запрос каксамый первый запрос с использованием контекста, я получаю все!Когда я запускаю этот же файл с другой страницы, и это второй запрос, выполняемый после предыдущего с использованием того же объектного контекста, запрос перестает расширяться в момент t3!Объект равен нулю, хотя идентификатор объекта явно присутствует.Данные существуют!Так что здесь есть что-то действительно странное.Примечание. Я использую класс фабрики одноэлементного объектного контекста, поэтому каждая страница создает собственный контекст объекта для использования при выполнении операций CRUD.

1 Ответ

10 голосов
/ 10 января 2012

Если вы используете клиентскую библиотеку WCF DS (DataServiceContext и связанные классы), то это очень вероятно из-за установки DataServiceContext.MergeOption на клиенте.По умолчанию это AppendOnly, что означает, что, если экземпляр данного объекта уже существует на клиенте, новые данные, поступающие с сервера, не будут обновлять его (это предотвращает запросы, отменяющие возможные изменения, сделанные на клиенте).Вы можете изменить MergeOption на OverwriteChanges, и тогда будут использованы значения сервера.(Это относится даже к свойствам навигации, поэтому расширение не работает, но на самом деле сервер отправляет данные обратно клиенту, но клиент их отбрасывает).

...