2009-10-19 3 views
2

Я хотел бы добавить DataTable в несколько DataSet, не вызывая DataTable.Copy(). Простое копирование DataTable удваивает объем данных в памяти и заставляет меня управлять его изменениями. Эта проблема существует, потому что я реализую решение таблиц деталей, в которых таблица подробностей может содержать более одного мастера.ADO .NET - добавление DataTable к нескольким DataSet

Если это помогает, рассмотрите этот фрагмент и получившее назойливое лицо.

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 :-(

Любые предложения pro там? Благодаря!

ответ

1

Вы не можете сделать это без копирования, поскольку DataSets предназначены для мобильных устройств, и independantly обновляемым, в результате, они должны содержать сами данные, а не только ссылку на данные ...

+0

Извините, это не имеет смысла, поскольку DataTables - это типы ссылок. Так же и строки. –

+0

Хенк ... Мое использование ссылки на слово не имеет ничего общего с различием .Net между ссылочными типами и типами значений. В этом контексте технически сами DataSets не являются ссылками ... хотя переменная, содержащая набор данных или указывающая на нее, является ссылочной переменной, а набор данных является ссылочным типом ... Сам DataSet (вещь в куче) не является «ссылкой» на данные в базе данных, это копия и включает в себя все эти данные. –

3

DataTable класс имеет свойство DataSet, это означает, что оно было предназначено для того, чтобы принадлежать (не более) 1 DataSet. Аналогично, DataRow имеет свойство Table.

A DataTable имеет ChildRelations и ParentRelations Недвижимость. Они были бы двусмысленными, если Datatable мог принадлежать более чем 1 DataSet. Поскольку коллекция всех отношений относится к DataSet, а имена отношений только применяются, чтобы быть уникальными в 1 DataSet.

Возможно, существуют (и лучше) причины, по которым таблица не может использоваться совместно с DataSets.