.net での DataSet の再利用
-
22-09-2019 - |
質問
.net でデータセットを再利用することは良い考えですか?私が言いたいのは...グリッドビューをループする次のコードがあります
For Each row in GridView
ds = New DataSet
ds.ReadXML(GetStream(row.Field))
... export the dataset
Next
ループ内で行っていることは、DataSet の新しいインスタンスを作成することです。ds.Clear() を呼び出して、それを ds.ReadXML() 経由で再利用することはできないでしょうか?
解決
セマンティクスは異なります。 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
他のヒント
あなたは他のパフォーマンスを考慮して再利用を量ります。一般的に、彼らは必要になるまで私はこのような最適化をしない話します。そして、私はそれが必要だということを証明するために数字を持っている場合にのみます。
あなたはそれを行うことができるかもしれないが、オブジェクトの作成がとても安価ですし、副作用の危険性を持っていない、新しいオブジェクトを作成しない何らかの理由がありません。
所属していません StackOverflow