2012-02-07 38 views
0

我在同步框架silverlight項目中爲我的客戶端數據庫引擎使用Siaqodb。我已經切換到siaqodb,因爲microsofts客戶端解決方案一次將整個數據庫加載到內存中,因此,處理大量數據很困難。在內存列表中標識更新項目的最佳方法是什麼?

我已經將SiaqodbOfflineEntity對象列表綁定到silverlight數據網格以創建可編輯的數據網格。與microsofts解決方案不同,您不能將數據庫條目直接綁定到數據網格。您必須查詢數據庫並將內存對象的列表綁定到數據網格。這會導致數據庫在更改datagrid單元格時不立即更新的問題。我試圖找到更改單元格後處理數據庫更新的最佳方法。我不能將每個項目都更新到數據庫中,因爲即使沒有對對象進行任何更改,siaqodb引擎也會將項目標記爲髒。嘗試同步時會造成衝突。持有原始列表的緩存版本,然後比較每個對象的每個屬性以找出哪些已經改變似乎會起作用,但似乎有點麻煩。我也試着查看一些datagrids事件,但RowEditEnded在編輯單元格時不會觸發,並且當我切換行(奇數)時,CurrentCellChanged似乎會觸發。

有一個更好的解決方案。有人有主意嗎?

+0

「微軟客戶端解決方案立即將整個數據庫加載到內存中」請原諒我的懷疑態度,但我嚴重懷疑您的聲明是否屬實。 http://msdn.microsoft.com/en-us/sync/bb887608同步fx使用更改跟蹤,並且您應該只在您的客戶端數據綁定到本地數據庫的子集。 – 2012-02-07 16:51:38

+0

問題在於使用孤立存儲的silverlight和Microsoft客戶端同步提供程序。即使在綁定數據庫的一個子集時,整個數據庫也會加載到內存中。更多信息可以在這裏找到:http://social.msdn.microsoft.com/Forums/en-US/synclab/thread/ad1ab1ac-0c4c-4856-88b6-81b8bae4d71b/ – dregan 2012-02-07 17:34:51

回答

0

所以我通過改變我的離線實體類來實現iNotifyPropertyChange,我認爲這是一個合理的解決方案。我將PropertyChanged事件設置爲將對象保存到數據庫的函數。有一個名爲notifypropertyweaver的VS包,它將在編譯時注入此代碼,從而減少自動生成的實體代碼所需的工作量。

相關問題