如何在使用 BindingSource 对象时在 SQLite 数据库表和数据网格视图之间获取兑现

本文关键字:网格 数据网 视图 数据 获取 之间 数据库 BindingSource 对象 SQLite | 更新日期: 2023-09-27 18:34:31

我在SQLite数据库表中有数据,我想在datagridview中显示的数据。我能够使用 BindingSource 并将数据加载到数据表中并填充我的DataGridView(和绑定导航器(在以下表上没有任何问题足够小(即它适合可用内存(。

但是我也有数据库的副本,其中先决条件(它适合记忆(不再是真的。而且我仍然想使用我的数据格里视图绑定源等。

DataGridView 具有仅加载记录的虚拟模式显示的Dan Microsoft给出了一个很好的兑现示例https://msdn.microsoft.com/en-US/库/MS171624(v=vs.100(中的记录.aspx让它工作,但它断开了数据网格视图与绑定源,我不能再使用绑定导航器或其他可以连接到绑定源的细节。

据我了解,数据表是数据的无连接副本。因为它是无连接的,所以它需要所有数据。这就是我的问题所在。所有数据都不适合内存。我看了一下使用从微软兑现和即时加载数据的想法示例,但没有看到为数据表实现此目的的简单方法。

问题:是否存在用于创建兑现或缓冲数据表的对象(或方法(可以与绑定源一起使用吗?

没有人有建议/方向如何以干净简单的方式解决这个问题?

亲切的问候。

如何在使用 BindingSource 对象时在 SQLite 数据库表和数据网格视图之间获取兑现

这是我所做的:

我创建了一个实现 IList 接口的 Cache 类。缓存是使用微软示例中的想法来实现的,以读取数据库。缓存可以作为列表进行访问,这是绑定源数据源属性所需的。

根据微软文档

属性可以设置为多个数据源,包括类型、对象和类型列表。生成的数据源将作为列表公开。

这是否意味着原始列表中的每条记录都有一个私有副本?这需要测试。如果是这样,我的想法就会失败。

我希望绑定源使用一些智能查找算法,而不是复制所有内容。我认为复制方案不太可能,例如,它将使插入和删除管理变得地狱。

第一次测试看起来很有希望。

但是,如果有人对此有更好的主意...

亲切问候。