识别内存列表中更新项目的最佳方法是什么?

时间:2012-02-07 16:40:36

标签: silverlight syncfx

我在同步框架silverlight项目中使用Siaqodb作为我的客户端数据库引擎。我已经切换到siaqodb,因为microsofts客户端解决方案一次将整个数据库加载到内存中,因此很难处理大数据。

我已将SiaqodbOfflineEntity对象列表绑定到silverlight数据网格,以便创建可编辑的数据网格。与microsofts解决方案不同,您无法将数据库条目直接绑定到数据网格。您必须查询数据库并将内存对象列表绑定到数据网格。这导致一个问题,即当更改数据网格单元时,数据库不会立即更新。我正在尝试找到更改单元格后更新数据库的最佳方法。我不能只将每个项目更新到数据库,因为即使没有对对象进行任何更改,siaqodb引擎也会将项目标记为脏。尝试同步时,这会导致冲突。持有原始列表的缓存版本,然后比较每个对象的每个属性,找出哪些已经改变似乎它会工作,但似乎有点麻烦。我也试过看一些datagrids事件,但是当编辑一个单元格时,RowEditEnded似乎没有触发,每当我切换行(奇数)时,CurrentCellChanged似乎都会触发。

必须有一个更好的解决方案。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以我通过更改我的离线实体类来实现iNotifyPropertyChange来实现这一点,我认为这是一个合理的解决方案。我将PropertyChanged事件设置为将对象保存到数据库的函数。有一个名为notifypropertyweaver的VS包将在编译时注入此代码,从而减少了对自动生成的实体代码所需的工作量。