Обновление автономной синхронизации Azure обновляется при извлечении целых данных во время добавочной синхронизации

У меня есть настольный контроллер, который имеет одностороннюю синхронизацию (только получить, так как с мобильного устройства нет обновлений). Таким образом, в самый первый раз, когда я выполняю PullAsync, он извлекает целые данные, поскольку в моем поле "Обновление в" указана одинаковая временная метка для всех записей. Теперь во второй раз я просто хотел сделать инкрементное извлечение (обратите внимание, я передаю значение имени в PullAsync, чтобы включить инкрементную синхронизацию).

Но проблема в том, что он снова извлекает все данные, поскольку в Update At нет обновленной отметки времени (потому что в Table Controller нет метода обновления, поскольку это односторонняя синхронизация Azure с мобильным устройством). Как я могу пропустить повторную загрузку данных, если обновления не происходит, когда все значения обновления "В" имеют одинаковую отметку времени? Проблема такая же, как упомянуто в ссылке ниже. Нужно ли нам делать одно обновление записи, чтобы это исправить?

https://social.msdn.microsoft.com/Forums/office/en-US/ff002e85-1313-449f-89eb-cd45c1a4846c/mobile-services-sync-pullasync-and-updatedat?forum=azuremobile

Заранее спасибо

1 ответ

Решение

Как я могу пропустить повторную загрузку данных, если обновления не происходит, когда все значения обновления "В" имеют одинаковую отметку времени? Проблема такая же, как упомянуто в ссылке ниже. Нужно ли нам делать одно обновление записи, чтобы это исправить?

Я проверил, что эта проблема все еще существует. AFAIK, то PullAsync операция извлечет 50 записей (по умолчанию MaxPageSize равен 50), затем начнет транзакцию для вставки / обновления извлеченных объектов, а затем обновит локальную __config таблицу с последним обновленным временным штампом, затем попытайтесь получить записи следующей страницы и снова выполнить описанную выше обработку.

Примечание: формат id колонка выглядит так deltaToken|{table-name}|{query-id},

Запрос на операцию извлечения будет выглядеть так:

https://<app-name>.azurewebsites.net/tables/<table-name>?$filter=(updatedAt ge datetimeoffset'2018-02-21T08:58:45.446Z')&$orderby=updatedAt&$skip=0&$top=50&__includeDeleted=true

Я предполагаю, что вы могли бы запросить местный __config таблицу, чтобы получить последнее значение updatedAt или запросить соответствующую локальную таблицу, чтобы получить последнее значение updatedAt, затем добавить небольшой интервал времени к текущему updatedAt и явно указать фильтр на UpdatedAt Свойство с предыдущим обновлением при использовании операции инкрементного вытягивания.

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