Каков наилучший способ определить обновленные элементы в списке в памяти? - PullRequest
0 голосов
/ 07 февраля 2012

Я использую Siaqodb для своей клиентской базы данных в проекте Silverlight Sync Framework. Я перешел на siaqodb, потому что клиентское решение microsofts загружает всю базу данных в память одновременно и, как таковое, с трудом обрабатывает большие данные.

Я связал список объектов SiaqodbOfflineEntity с сеткой данных silverlight, чтобы создать редактируемую сетку данных. В отличие от решения Microsoft, вы не можете привязать записи базы данных напрямую к сетке данных. Вы должны сделать запрос к базе данных и связать список объектов в памяти с сеткой данных. Это вызывает проблему, заключающуюся в том, что база данных не обновляется сразу после изменения ячейки таблицы данных. Я пытаюсь найти лучший способ обработки обновлений базы данных после изменения в ячейке. Я не могу просто обновить каждый элемент в базе данных, потому что движок siaqodb пометит элемент как грязный, даже если в объект не было внесено никаких изменений. Это приведет к конфликтам при попытке синхронизации. хранение кэшированной версии исходного списка и последующее сравнение каждого свойства каждого объекта, чтобы найти, какие из них изменились, выглядит так, как будто оно будет работать, но выглядит немного громоздким. Я также пытался просмотреть некоторые события datagrids, но RowEditEnded не запускается при редактировании ячейки, а CurrentCellChanged, похоже, срабатывает всякий раз, когда я переключаю строки (нечетно).

Должно быть лучшее решение для этого. У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 08 февраля 2012

Итак, я заставил это работать, изменив мои классы автономных сущностей для реализации iNotifyPropertyChange, и я думаю, что это разумное решение. Я установил событие PropertyChanged для функции, которая сохраняет объект в базе данных. Существует пакет VS под названием notifypropertyweaver , который внедрит этот код во время компиляции, уменьшая объем работы, которую необходимо выполнить для автоматически сгенерированного кода объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...