タイムアウトをに設定する方法はありますかCreateSprocAccessor(...) Enterprise Library 5.0?エンタープライズライブラリ5.0、CreateSprocAccessorおよびタイムアウト
長いストアドプロシージャでは、デフォルトのタイムアウトが機能しません。
タイムアウトをに設定する方法はありますかCreateSprocAccessor(...) Enterprise Library 5.0?エンタープライズライブラリ5.0、CreateSprocAccessorおよびタイムアウト
長いストアドプロシージャでは、デフォルトのタイムアウトが機能しません。
最初のこと:接続文字列にタイムアウトを追加しても問題は解決しません。
回避策:EL 5.0のソースコードを変更して、新しいカスタムDLLを生成することができます。で... \ EntLib50Src \ブロック\データ\ SRC \データ\ SprocAccessor.cs
は実際に、私はノーあると思いますあなた自身のELのコピーを持っている必要があります。そのまま元ELのバイナリを保つために、あなただけのフォローを行うことができます。SprocAccessorクラス
SprocAccessorクラスに(あなたの新しいクラスで)ローカル変数に保つためにもPROCEDURENAMEが必要になります。
public class SprocAccessorWithTimeout<T> : SprocAccessor<T>
{
readonly string procedureName;
public SprocAccessorWithTimeout(Database database, string procedureName, IRowMapper<T> rowMapper) : base(database, procedureName, rowMapper)
{
this.procedureName = procedureName;
}
public override IEnumerable<T> Execute(params object[] parameterValues)
{
using (var command = Database.GetStoredProcCommand(this. procedureName))
{
command.CommandTimeout = MaxSpExecutionTimeout;
if (parameterValues.Length > 0)
{
Database.AssignParameters(command, parameterValues);
}
return base.Execute(command);
}
}
}