【问题标题】:Determining wether to store data in memory or in Database确定是将数据存储在内存中还是数据库中
【发布时间】:2013-05-30 06:28:05
【问题描述】:

我正在用 c# 编写一个 WinForms 实用程序,它允许管理员在我的工作环境中的计算机上查询和执行操作(批量)。我已经开始创建一些模拟项目来展示给我的上级。

实用程序显示:

  1. datagridview 中的计算机列表(名称、正常运行时间、操作系统、位置等)
  2. 可在选定计算机上执行的操作/查询列表

操作和查询将需要使用其结果更新计算机数据网格视图中的行。 用户需要能够对 datagridview 中的列进行排序并根据计算机位置过滤行。

My Computer 的 datagridview 填充如下: Datagridview => BindingSource => DataSet => 本地数据库

首次运行 Util 时,将从 Active Directory 组中读取计算机列表并将其插入本地数据库。 然后根据来自数据库的查询填充计算机的 DataTable。 然后将 BindingSource 绑定到 DataTable,并将 datagridview 绑定到 BindingSource 以显示给用户。

在选定的计算机上运行操作时,结果将添加到计算机数据表(反映在 Datagridview 中)并提交到 SQLCEDatabase。

当用户从位置列表中选择不同位置时,将运行 SQL 查询以使用本地数据库的结果重新填充数据表。

Util 不需要保存收集到的任何数据,事实上,当 Util 首次运行时,它会从本地数据库中删除所有记录并重新开始。

我认为我的设计可能过于矫枉过正,希望能得到一些建议,以更好地把它们组合在一起。我是否会更好地报废本地数据库并通过 BindingList 或其他类型的列表将所有数据保存在内存中?这仍然允许我根据查询过滤 datagridview 并允许排序吗?

抱歉,如果这篇文章冗长且令人费解,但我不知道该怎么说。

【问题讨论】:

  • 想想 Database over Memory 的优缺点。

标签: c# datagridview bindinglist


【解决方案1】:

“当 Util 首次运行时,它会从本地数据库中删除所有记录并重新开始” => 转储数据库并将所有内容保存在内存中。否则你会增加巨大的开销,而不会得到任何有用的回报。

【讨论】:

  • 谢谢丹尼尔,我将改变我的设计并基于绑定列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 2020-02-27
相关资源
最近更新 更多