我想在不调用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 :-(
有专家建议吗?谢谢!
答案 0 :(得分:3)
DataTable
类具有DataSet
属性,这意味着它有意设计为属于(最多)1个DataSet。同样,DataRow
具有Table
属性。
DataTable
具有ChildRelations
和ParentRelations
属性。如果Datatable可以属于多个DataSet,它们将是不明确的。因为所有关系的集合都属于DataSet,并且关系名称仅在1 DataSet中强制为唯一。
可能有更多(更好)的原因导致无法在DataSet之间共享Table。
答案 1 :(得分:1)
如果没有复制,你就无法做到这一点,因为DataSet被设计成可移动的,并且可独立更新,因此,它们必须包含数据本身,而不仅仅是对数据的引用......