.NET 表适配器:获取与填充?

Posted

技术标签:

【中文标题】.NET 表适配器:获取与填充?【英文标题】:.NET Table Adapters: Get vs. Fill? 【发布时间】:2010-09-15 09:43:51 【问题描述】:

在处理数据库中的数据(强类型或其他类型)时,我似乎总是使用 Get,我从来没有真正需要使用 Fill,尽管在提取和更新数据时我可以很容易地使用 Fill 而不是 get。

任何人都可以就每种方法的含义和问题提供指导吗?

在什么情况下最好使用其中一种?

任何性能影响?

提前感谢您的回答!我爱这个社区!

【问题讨论】:

【参考方案1】:

使用 Fill 可以很好地调试异常,因为可以查询传递给方法的 DataTable 以获取更多详细信息。 Get 不会在相同的情况下返回。

提示:

DataTable.GetErrors() 返回一个 出错的 DataRow 实例数组 DataRow.RowError 包含一个 行错误说明 DataRow.GetColumnsInError() 返回 DataColumn 实例的数组 错误

【讨论】:

【参考方案2】:

Fill 的一个特殊问题是,如果表已经包含数据,您可能会遇到唯一索引异常,例如,当查询返回主键已经在表中的行时。

我使用过大量数据绑定的 Windows 窗体代码,其中编辑控件或窗体上的网格绑定到表,然后使用填充将更多行从数据库加载到表中。这可能会导致一些有趣的事件触发序列和经验中的间歇性错误。

使用 Get 检索具有新结果的新表,然后将表单重新绑定到新表可以避免这种情况。

我怀疑两者之间的性能差异很大,除非在具有现有行的表上使用 Fill。在这种情况下,表的 BeginLoadData 方法将被忽略,这通常会延迟事件触发和索引重建直到结束。

【讨论】:

【参考方案3】: 只需要一个 DataTable 时获取。 当您想将其他数据表添加到单个数据集中时填写。

【讨论】:

【参考方案4】:

唯一的区别是GetData会为你实例化一个表,Fill会填充一个现有的表。

这取决于您是否想要或需要实例化 DataTable。在填充已实例化的 DataSet 的某个表成员时,我经常使用 Fill。

【讨论】:

以上是关于.NET 表适配器:获取与填充?的主要内容,如果未能解决你的问题,请参考以下文章

Firestore回收器适配器无法获取文档名称

我的列表视图没有填充,我的适配器有问题吗?

DataTable 修改后的行数在适配器填充后恢复为 0

vb.net 第一节 获取本机网络适配器的信息 GetAdaptersInfo

列表视图适配器实现

在 Visual Basic 中更新表适配器时出错