C#Typed DataSet Copy()后表属性被破坏

时间:2011-07-20 03:39:11

标签: c# .net dataset system.data

我有一个带有多个表的类型化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()方法来保留对表的命名访问权限?

1 个答案:

答案 0 :(得分:0)

我的猜测是你对Copy的调用返回了一个非类型化的DataSet(虽然我不确定为什么你不会得到编译器错误)。

尝试将您调用Copy的行更改为:

dsMySecondDataSet = (MyDataSetType) dsMyFirstDataSet.Copy();