[seasar-dotnet:476] S2DAO.NET1.0.2でのCommandTimeoutのコントロール方法

Michio Nakagawa [E-MAIL ADDRESS DELETED]
2007年 3月 6日 (火) 20:24:22 JST


いつもお世話になっております。
中川と申します。

S2Dao.NET 1.0.2を利用させて頂いております。

データ検索時にデータ件数の都合で30秒を超える場合があり、タイムアウト
する場合あります。ADO.NETのSqlCommandのCommandTimeoutの初期値が30秒
なので、恐らくS2Dao.NETでもその値が初期値として利用されているのだと
思い、S2Container.NET内ADO & S2Dao.NET内でCommandTimeoutdに類似する
プロパティを探しましたが、まだまだ勉強不足で恥ずかしながら見つける
ことができませんでした。

S2Adoを利用する場合は、
Seasar.Extension.ADO.Impl.BasicSelectHandler等に
にCommandTimeoutがありますので、これを設定すればタイムアウトの問題は
解決されそうですが、S2Dao.NETの場合はどのように指定すればよろしいのでしょうか?

例えば、以下のようなDICONの場合、S2Dao.NETはIDataSourceの実装クラスとして"DataSource"が
インジェクションされると解釈しています。

<component name="SqlClient" class="Seasar.Extension.ADO.DataProvider">
  <property name="ConnectionType">"System.Data.SqlClient.SqlConnection"</property>
  <property name="CommandType">"System.Data.SqlClient.SqlCommand"</property>
  <property name="ParameterType">"System.Data.SqlClient.SqlParameter"</property>
  <property name="DataAdapterType">"System.Data.SqlClient.SqlDataAdapter"</property>
</component>

<component name="DataSource" class="Seasar.Extension.Tx.Impl.TxDataSource">
  <property name="DataProvider">SqlClient</property>
  <property name="ConnectionString">hoge</property>  
</component>

DICONで定義している"DataSource"は、DataProviderとして"SqlClient"をインジェクション
していると解釈しています。

ここで”SqlClient”のCommandTypeに"System.Data.SqlClient.SqlCommand"を指定して
いますが、Seasar.Extension.ADO.Impl.DataSourceImpl#GetCommand()で毎回SqlCommandを
生成しているようなので、そのかわりに
<component instance ="prototype" class="System.Data.SqlClient.SqlCommand" >
  <property name="CommandTimeout">180</property>
</component>
のような定義したSqlCommandをSqlClientに設定できればと思ったのですが、その方法を
見つけることができませんでした。

恐れ入りますが、ご教授頂きます様よろしくお願い申し上げます。

--
Michio Nakagawa


seasar-dotnet メーリングリストの案内