我有一个带有多个表的类型化DataSet,我想要复制,包括数据和模式。我可以在原版中访问这样的表格:
MyDataSetType dsMyFirstDataSet;
MyDataTableType dtTable1;
MyDataTableType dtTable2;
dtTable1 = dsMyFirstDataSet.MeaningfulTableName1;
dtTable2 = dsMyFirstDataSet.MeaningfulTableName2;
当我执行以下操作时,我无法再通过新版本中的名称访问表格,但我可以通过Tables集合访问。
MyDataSetType dsMySecondDataSet;
dsMySecondDataSet = dsMyFirstDataSet.Copy();
dtTable1 = dsMySecondDataSet.MeaningfulTableName1; // null
dtTable2 = dsMySecondDataSet.MeaningfulTableName2; // null
dtTable1 = dsMySecondDataSet.Tables[0]; // table not null/copied ok
dtTable2 = dsMySecondDataSet.Tables[1]; // table not null/copied ok
我正在通过索引访问它们,就像第二个例子一样,但我想知道为什么命名表链接被切断了?我是否必须编写自己的Copy()方法来保留对表的命名访问权限?
答案 0 :(得分:0)
我的猜测是你对Copy
的调用返回了一个非类型化的DataSet(虽然我不确定为什么你不会得到编译器错误)。
尝试将您调用Copy
的行更改为:
dsMySecondDataSet = (MyDataSetType) dsMyFirstDataSet.Copy();