ADO .NET - 将DataTable添加到多个DataSet

时间:2009-10-19 17:53:02

标签: .net datatable dataset ado

我想在不调用DataTable.Copy()的情况下将DataTable添加到多个DataSet。简单地复制DataTable会使内存中的数据量翻倍,并使我能够管理其更改。存在此问题的原因是我正在实现详细信息表解决方案,其中详细信息表可以包含多个主数据库。

如果有帮助,请考虑这个片段以及由此产生的皱眉脸。

DataTable table1 = GetDataTable(); // 100 rows of data
DataTable table2 = table1;

DataSet1 dataset1 = new DataSet();
DataSet2 dataset2 = new DataSet();

dataset1.Tables.Add(table1);
dataset2.Tables.Add(table2); // fails because table2 already exists in dataset1 :-(

有专家建议吗?谢谢!

2 个答案:

答案 0 :(得分:3)

DataTable类具有DataSet属性,这意味着它有意设计为属于(最多)1个DataSet。同样,DataRow具有Table属性。

DataTable具有ChildRelationsParentRelations属性。如果Datatable可以属于多个DataSet,它们将是不明确的。因为所有关系的集合都属于DataSet,并且关系名称仅在1 DataSet中强制为唯一。

可能有更多(更好)的原因导致无法在DataSet之间共享Table。

答案 1 :(得分:1)

如果没有复制,你就无法做到这一点,因为DataSet被设计成可移动的,并且可独立更新,因此,它们必须包含数据本身,而不仅仅是对数据的引用......