0

Sync Framework Silverlight プロジェクトで、クライアント側データベース エンジンに Siaqodb を使用しています。マイクロソフトのクライアント側ソリューションはデータベース全体を一度にメモリにロードするため、大きなデータを処理するのに苦労するため、siaqodb に切り替えました。

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

これにはもっと良い解決策が必要です。誰にもアイデアはありますか?

4

1 に答える 1

0

したがって、オフラインエンティティクラスを変更してiNotifyPropertyChangeを実装することでこれを機能させることができ、これは合理的な解決策だと思います。PropertyChangedイベントを、オブジェクトをデータベースに保存する関数に設定しました。コンパイル時にこのコードを挿入するnotifypropertyweaverと呼ばれるVSパッケージがあり、自動生成されたエンティティコードで実行する必要のある作業の量を削減します。

于 2012-02-08T07:07:18.243 に答える