1

アクティブな IDataReader オブジェクトを Repeater、GridView などに割り当てると、DataBind メソッドの呼び出しが完了すると自動的に閉じられるのでしょうか?それとも明示的に自分で閉じる必要がありますか?

this.sampleRepeater.DataSource = ExampleDAL.GetIDataReader();
this.sampleRepeater.DataBind();
4

3 に答える 3

2

DataReaderタイプでは、データにアクセスしている間、接続を開いたままにする必要があります。これは、たとえばDataTableのような切断されたデータソースではありません。あなたはこれを自分で閉じなければなりません、さもなければあなたはそれが自然の原因で死ぬのを待っています:)。

代替案に興味がありますか?データをDataTable、DataSetに入れるか、返された行をカスタムオブジェクトのリストに変換して、そのうちの1つを返します。

お役に立てば幸いです。

于 2009-03-19T15:53:10.817 に答える
0

Reflectorを使用してRepeaterのコードを確認しましたが、IDataReaderが閉じません。あなたはそれを自分でしなければならないでしょう。

于 2009-03-19T15:47:54.170 に答える
0

自分で閉めるしかないと思います。たとえば、Repeater の DataBind は、そのデータ ソースを閉じません。IDataSource でない場合は、単純に IEnumerable としてキャストし、foreach を呼び出します。

于 2009-03-19T15:21:11.550 に答える