0

即使在使用本地进程内数据库进行应用程序数据持久性的应用程序中使用 .NET 数据集是否有意义?

如果 DataSet 主要用于数据库结果的内存缓存,那么在使用与应用程序在同一进程中运行的 SQL Server Compact 本地数据库之类的东西时,它们听起来并不是那么有用。

使用类型化数据集还有其他原因吗?比如说,他们是否简化了 WPF 数据绑定?

4

3 回答 3

2

让我试着回答我自己的问题。

在我看来,DataSets 是为以下用例设计的:

  1. 数据从远程 DB 加载到内存缓存(DataSet)。
  2. 缓存副本以非平凡的方式(多个表、删除、添加、更新)进行操作,而无需与数据库建立活动连接。
    • 需要将数据库关系建模到本地缓存中以启用这些操作。
    • 数据绑定到 UI(例如,WPF)是微不足道的,因为我们正在处理数据的内存副本。
  3. 缓存的副本有时会更新到远程数据库以实现真正的持久性。
    • 例如,当客户端返回在线状态或用户按下“应用”以真正提交他的数据时,可能会发生这种情况。

使用本地进程内数据库,无需完全脱机工作——本地数据库连接始终可用。这表明无需将(可能)复杂的数据库关系建模到本地缓存中以启用添加、删除和更新。相反,人们会直接修改数据库中的数据,并且只维护一个自定义的本地缓存来查看数据。本地缓存可以与 DB 层分离,并放入它自己的 ViewModel 层 (MVVM)。

于 2009-01-25T10:15:37.563 回答
0

我已经从我的应用程序中删除了所有类型化的数据集。创建它们需要很长时间。通过创建,我的意思是新的语句/构造函数。此外,检索数据不如直接使用 DataReaders 高效。

不知道对进程内数据库的许多查询(使用 DataReader)是否会使您的应用程序变慢很多。我认为这仅取决于您的应用程序。

大多数情况下,缓存数据以解析额外的 SQL 语句并检索信息会更快。但话又说回来,它需要的额外内存也是有代价的。

于 2009-01-22T09:07:30.120 回答
0

您可以使用 SQL server compact 轻松对应该与 SQL server 一起使用的应用程序进行单元测试。如果没有 Sql server compact,您的测试是集成测试而不是单元测试(更难配置并且需要更多时间运行)。

于 2009-05-16T14:15:06.377 回答