Свойство таблицы не работает после C# Typed DataSet Copy()

У меня есть типизированный DataSet с несколькими таблицами, которые я хочу скопировать, вместе с данными и схемой. Я могу получить доступ к таким таблицам в моем оригинале:

MyDataSetType dsMyFirstDataSet;
MyDataTableType dtTable1;
MyDataTableType dtTable2;

dtTable1 = dsMyFirstDataSet.MeaningfulTableName1;
dtTable2 = dsMyFirstDataSet.MeaningfulTableName2;

Когда я делаю следующее, я больше не могу получить доступ к таблицам по именам в новой версии, но могу через коллекцию таблиц.

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(), чтобы сохранить именованный доступ к таблицам?


person Fellmeister    schedule 20.07.2011    source источник


Ответы (1)


Я предполагаю, что ваш вызов Copy возвращает нетипизированный DataSet (хотя я не уверен, почему вы не получите ошибку компилятора).

Попробуйте изменить строку, в которой вы вызываете Copy, на это:

dsMySecondDataSet = (MyDataSetType) dsMyFirstDataSet.Copy();
person Jay Riggs    schedule 20.07.2011
comment
Великие умы думают одинаково и все такое. Боюсь, я пробовал это в промежутке времени, и это не имело никакого эффекта. - person Fellmeister; 20.07.2011