Tag Archives: TableAdapter

.NET Software Tips

Updated: Setting CommandTimeOut di TableAdapter

Ternyata, object this._adapter lebih sering bernilai null sehingga code dalam partial class table adapter tidak memberikan efek apapun. Namun object this.Adapter ternyata memberikan hasil yang ingin dicapai. Jadi rubah code di tahap 4 yang terdapat disini menjadi:

public int CommandTimeout
        {
            get
            {
                if (this.CommandCollection != null)
                    return (this.CommandCollection[0].CommandTimeout);
                else
                    return 30;
            }

            set
            {
                if (this.Adapter != null)
                {
                    if (this.Adapter.InsertCommand != null)
                        this.Adapter.InsertCommand.CommandTimeout = value;
                    if (this.Adapter.UpdateCommand != null)
                        this.Adapter.UpdateCommand.CommandTimeout = value;
                    if (this.Adapter.DeleteCommand != null)
                        this.Adapter.DeleteCommand.CommandTimeout = value;
                }
                if (this.CommandCollection != null)
                {
                    foreach (System.Data.SqlClient.SqlCommand SelectCommand in this.CommandCollection)
                    {
                        if (SelectCommand != null)
                        {
                            SelectCommand.CommandTimeout = value;
                        }
                    }
                }
            }
        }

.NET Software Tips

Setting CommandTimeOut di TableAdapter

Secara default, TableAdapter menggunakan TimeOut 30s untuk setiap interaksi-nya ke database. Namun ada kalanya suatu transaksi database membutuhkan waktu yang lebih lama dari 30s. Sayangnya TableAdapter tidak menyediakan akses secara langsung ke parameter TimeOut ini karena semua object yang diperlukan untuk interaksi dengan database dibuat secara on the fly saat dibutuhkan.

image
part of generated code at xxx.Designer.cs

Disinilah Partial Class berguna untuk membuat agar CommandTimeOut dapat diakses oleh source code kita.

1. Buka file .xsd tempat TableAdapter yang hendak kita buat agar CommandTimeOut dapat diakses seperti pada gambar dibawah ini;

image

2. Sorot TableAdapter yang diinginkan dan klik kanan. Pilih View Code dari PopUp Menu;

image

3. Visual Studio akan membuka file cs yang sesuai dan akan langsung menunjuk ke arah Partial Class yang relevan;

image

4. Tambahkan code berikut di dalam partial class yang relevan itu:

        public int CommandTimeout
        {
            get
            {
                return (this._adapter.InsertCommand.CommandTimeout);
            }

            set
            {
                this._adapter.InsertCommand.CommandTimeout = value;
                this._adapter.UpdateCommand.CommandTimeout = value;
                this._adapter.DeleteCommand.CommandTimeout = value;
                foreach (System.Data.SqlClient.SqlCommand SelectCommand in this._commandCollection)
                {
                    if (SelectCommand != null)
                    {
                        SelectCommand.CommandTimeout = value;
                    }
                }
            }
        }

5. Simpan dan tutup file tersebut

6. Sekarang anda sudah dapat mengakses CommandTimeOut dari TableAdapter di dalam source code. Contoh di bawah ini merubah TimeOut menjadi 120s atau 2 menit.

image