Sync Framework Silverlight プロジェクトで、クライアント側データベース エンジンに Siaqodb を使用しています。マイクロソフトのクライアント側ソリューションはデータベース全体を一度にメモリにロードするため、大きなデータを処理するのに苦労するため、siaqodb に切り替えました。
編集可能なデータグリッドを作成するために、SiaqodbOfflineEntity オブジェクトのリストを Silverlight データグリッドにバインドしました。Microsoft のソリューションとは異なり、データベース エントリをデータグリッドに直接バインドすることはできません。データベースにクエリを実行し、メモリ内オブジェクトのリストをデータグリッドにバインドする必要があります。これにより、データグリッド セルが変更されたときにデータベースがすぐに更新されないという問題が発生します。セルの変更後にデータベースの更新を処理する最善の方法を見つけようとしています。オブジェクトに変更が加えられていなくても、siaqodb エンジンはアイテムをダーティとしてマークするため、各アイテムをデータベースに更新することはできません。これにより、同期しようとすると競合が発生します。元のリストのキャッシュされたバージョンを保持し、各オブジェクトの各プロパティを比較して、変更されたものを見つけます。しかし、少し面倒なようです。また、いくつかのデータグリッドイベントを調べてみましたが、セルが編集されたときにRowEditEndedが起動しているようには見えず、行を切り替えるたびにCurrentCellChangedが起動するようです(奇数)。
これにはもっと良い解決策が必要です。誰にもアイデアはありますか?