首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataSet TableAdapter填充方法

DataSet TableAdapter填充方法
EN

Stack Overflow用户
提问于 2011-09-17 15:09:20
回答 2查看 3.9K关注 0票数 0

我有一个具有两个TableAdapters (一对多关系)的DataSet,它是使用visual studio 2010的配置向导创建的。

我调用外部源并用结果填充Dictionary。这些结果应该是数据库中的所有条目。要同步数据库,我不希望只清除所有表,然后重新填充它们,就像删除表并使用sql中的新数据创建它们一样。

有没有一种干净的方法可以使用TableAdapter.Fill()方法,或者我必须逐行遍历这两个表,然后决定它是保留还是删除,然后添加新条目?使字典中的数据成为使用DataSet的两个表中的唯一数据的最佳方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2011-09-17 15:30:35

第一个问题:如果是同一个数据库,为什么有两个表包含相同的信息?

对于手头的问题:这在很大程度上取决于大小。如果表不大,则使用事务,清除该表(DELETE * FROM table或其他),然后将数据重新写入其中。另一方面,如果表很大,那么问题是:您可以将所有这些都加载到您的字典中吗?

当然,您必须问自己如何处理不一致的数据(当您在字典中保存数据时,另一个用户/应用程序更改了数据)。

如果这需要很长时间,您可以记住您对数据做了什么-这意味着:标记更改的数据,记住删除的键和新插入的行,并基于此进行更新。

两者都可以通过记住填充的DataTable并将其用作支持字段或通过实现您自己的机制来实现。

无论如何,我建议大家思考一下这个问题:你真的需要字典吗?为什么不对数据库进行查询来获取数据呢?或者只缓存部分数据,以便快速访问?

PS: DataAdapter上的update方法将完成所有工作(更改、删除和插入新的数据行,但它将更新数据表/数据集,因此这将只工作一次)

票数 0
EN

Stack Overflow用户

发布于 2011-09-17 15:34:01

重新填充整个表可能比遍历并决定去/留哪些记录更快。您可以不执行通过sql语句决定是否删除记录的过程吗?(Delete from table where active = false)如果希望它们留在数据库中而不是数据集中(select * from table where active = true)

您可以有一个日期字段,并选择自上次‘池化’数据库以来添加的所有记录(select * from table where active = true和date-added > #12:30#)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7453123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档