none
Кеширование данных Azure SQL в SQLLite RRS feed

  • Вопрос

  • Windows 8 для магазина. SQL Azure база.

    Чтобы не тянуть постоянно данные с удалённой базы решил сделать кеширование и проверку на Хэш код (по-моему так называется). С чего начать не знаю. Как это делается.

    Т.е. база SQLLite точная копия Azure SQL. (на данный момент даже данные в таблицах одинаковые).

    Но предстоит добавлять данные в некоторые таблицы в удаленную базу.

    1) Как реализовать проверку на изменение в базе (т.е. проверку на хэш)?

    2) Как обновить локальную базу только теми данными, которые изменились (либо удалились либо добавились либо изменились)

    Сейчас данные тянутся из Azure через WCF сервис через edmx модель на стороне сервера. А к локальной базе будет прямое подключение в Nuget есть расширение.

    8 декабря 2012 г. 19:35

Ответы

  • Привет.

    Врядли есть стандартные средства такого вида кеширования SQL Azure - SQLLite и скорей всего вам самостоятельно придется все реализовывать.

    Самое навернло явное решение - это добавить к данным столбец даты последнего изменения, тогда вы сможете запрашивать новые/изменившиеся данные. С удаленными данными сложенее - тут надо что-то придумывать.

    Хотя если вы используете Entity Framework, то в нем уже должны быть встроены механизмы разрешения проблем обновления БД новыми данными с сохранением старых - copy records from between two databases using EF


    Для связи [mail]

    • Помечено в качестве ответа developers_s 10 декабря 2012 г. 8:45
    10 декабря 2012 г. 8:00
  • Только с EF вам главное правильно выставлять состояния данных, нужно помнить чтобы они было действительным, чтобы изменения перенеслись в таблицу. Например если вы получили данные из контекста1 (связанного с azure), после их изменили, то добавить в несвязанный контекст2 их с изменением состояния на Modified с помощью метода ObjectStateManager.ChangeObjectState

    Обновлять данные (получать новые из бд) с помощью метода Refresh с параметром ClientWins (чтобы сохранить измененные данные, которые не были загружены в БД).

    И тому подобные важные вещи. Попробуйте поискать в эту сторону.


    Для связи [mail]

    • Помечено в качестве ответа developers_s 10 декабря 2012 г. 8:45
    10 декабря 2012 г. 8:16

Все ответы

  • Привет.

    Врядли есть стандартные средства такого вида кеширования SQL Azure - SQLLite и скорей всего вам самостоятельно придется все реализовывать.

    Самое навернло явное решение - это добавить к данным столбец даты последнего изменения, тогда вы сможете запрашивать новые/изменившиеся данные. С удаленными данными сложенее - тут надо что-то придумывать.

    Хотя если вы используете Entity Framework, то в нем уже должны быть встроены механизмы разрешения проблем обновления БД новыми данными с сохранением старых - copy records from between two databases using EF


    Для связи [mail]

    • Помечено в качестве ответа developers_s 10 декабря 2012 г. 8:45
    10 декабря 2012 г. 8:00
  • Только с EF вам главное правильно выставлять состояния данных, нужно помнить чтобы они было действительным, чтобы изменения перенеслись в таблицу. Например если вы получили данные из контекста1 (связанного с azure), после их изменили, то добавить в несвязанный контекст2 их с изменением состояния на Modified с помощью метода ObjectStateManager.ChangeObjectState

    Обновлять данные (получать новые из бд) с помощью метода Refresh с параметром ClientWins (чтобы сохранить измененные данные, которые не были загружены в БД).

    И тому подобные важные вещи. Попробуйте поискать в эту сторону.


    Для связи [mail]

    • Помечено в качестве ответа developers_s 10 декабря 2012 г. 8:45
    10 декабря 2012 г. 8:16