2013-08-06 41 views
13

Giá trị mặc định CommandTimeout là 30 giây. Bạn có thể tự thay đổi giá trị trên một thể hiện của đối tượng lệnh bằng cách làm như sauĐặt CommandTimeout mặc định tùy chỉnh cho tất cả các Đối tượng Lệnh mới

Dim cmd As New System.Data.SqlClient.SqlCommand 
cmd.CommandTimeout = 60 

Có cách nào để xác định một giá trị mặc định khác nhau, chẳng hạn rằng tất cả các đối tượng lệnh mới sẽ tự động có giá trị này trong giải pháp của bạn khi chúng được tạo ra?

+0

[Câu hỏi liên quan] (http://stackoverflow.com/q/1001713/1178314) (Không gắn cờ là lừa đảo, có một số khác biệt đáng kể trong các câu hỏi đó, ngay cả khi câu trả lời s cho cả hai đều giống nhau.) –

Trả lời

10

Theo như tôi biết không, không có cách nào để thay đổi mặc định này. Mã constructor cho một SqlCommand là thế này:

public SqlCommand() 
{ 
    this.ObjectID = Interlocked.Increment(ref _objectTypeCount); 
    this._commandTimeout = 30; 
    this._updatedRowSource = UpdateRowSource.Both; 
    this._prepareHandle = -1; 
    this._rowsAffected = -1; 
    this._notificationAutoEnlist = true; 
    GC.SuppressFinalize(this); 
} 

Sự chỉnh sửa có là sử dụng một SqlCommand được xác định trước thông qua như là đối số cho các nhà xây dựng mà phải mất một SqlCommand như là đối số.

Vì vậy, bạn có thể tạo ra một SqlCommand toàn cầu (mẫu)

Dim commandTemplate60 = new SqlCommand() 
commandTemplate60.Timeout = 60 

và sau đó khi bạn cần một lệnh với một thời gian chờ là 60 giây

Dim cmd As New System.Data.SqlClient.SqlCommand(commandTemplate60) 

Tuy nhiên, thiết lập trực tiếp Timeout, doesn 't có vẻ là rất nhiều công việc