Повторное использование DataSets в .net - PullRequest
2 голосов
/ 25 февраля 2010

Является ли хорошей идеей повторно использовать набор данных в .net? Я имею в виду ... у меня есть следующий код, который зацикливает gridview

For Each row in GridView
  ds = New DataSet
  ds.ReadXML(GetStream(row.Field))
  ... export the dataset
Next

То, что я делаю в цикле, - это создание нового экземпляра DataSet. Разве я не могу просто вызвать ds.Clear (), а затем повторно использовать его через ds.ReadXML ()?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Семантика отличается: DataSet.Clear удаляет все данные (строки), но сохраняет схему (таблицы и отношения).

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

DataSet.Clear, вероятно, будет работать, если вы уверены, что все документы XML имеют одинаковую схему, но использование New более надежно и лучше выражает ваши намерения.

Однако, если вы читали только данные, как в следующем примере, DataSet.Clear может быть лучшим выбором, поскольку он позволяет избежать повторного создания схемы.

ds = New DataSet 
... code to create the schema (Tables, Columns, Relations)

For Each row in GridView 
  ds.ReadXML(GetStream(row.Field), XmlReadMode.IgnoreSchema) 
  ... export the dataset 
  ds.Clear
Next 
2 голосов
/ 25 февраля 2010

Вы взвешиваете повторное использование с другими соображениями производительности. Вообще говоря, я не делаю подобные оптимизации, пока они не станут необходимыми. И только тогда, если у меня есть числа, чтобы доказать, что это нужно.

1 голос
/ 25 февраля 2010

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

...