Saat ini saya menggunakan DataTable untuk mendapatkan hasil dari database yang bisa saya gunakan dalam kode saya.
Namun, banyak contoh di web show menggunakan DataSet sebagai gantinya dan mengakses tabel melalui metode koleksi.
Apakah ada keuntungan, kinerja bijaksana atau cara lain, menggunakan DataSets atau DataTables sebagai metode penyimpanan untuk hasil SQL?
Jawaban:
Ini benar-benar tergantung pada jenis data yang Anda bawa kembali. Karena DataSet (sebenarnya) hanyalah kumpulan objek DataTable, Anda dapat mengembalikan beberapa set data yang berbeda menjadi objek tunggal, dan karenanya lebih mudah dikelola.
Dari segi kinerja, Anda cenderung mendapatkan inefisiensi dari kueri yang tidak dioptimalkan daripada dari pilihan "salah" dari konstruksi .NET. Setidaknya, itulah pengalaman saya.
sumber
Satu perbedaan utama adalah bahwa DataSet dapat menampung banyak tabel dan Anda dapat mendefinisikan hubungan antara tabel-tabel itu.
Jika Anda hanya mengembalikan satu set hasil meskipun saya pikir DataTable akan lebih dioptimalkan. Saya akan berpikir harus ada beberapa overhead (diberikan kecil) untuk menawarkan fungsionalitas yang dilakukan DataSet dan melacak beberapa DataTables.
sumber
di 1.x dulu ada hal-hal yang DataTables tidak bisa melakukan yang DataSets bisa (tidak ingat persis apa). Semua yang diubah di 2.x. Dugaan saya adalah itu sebabnya banyak contoh masih menggunakan DataSets. DataTable harus lebih cepat karena lebih ringan. Jika Anda hanya menarik satu hasil tunggal, itu pilihan terbaik Anda di antara keduanya.
sumber
Salah satu fitur dari DataSet adalah bahwa jika Anda dapat memanggil beberapa pernyataan pilihan dalam prosedur tersimpan Anda, DataSet akan memiliki satu DataTable untuk masing-masingnya.
sumber
Ada beberapa optimasi yang bisa Anda gunakan saat mengisi DataTable, seperti memanggil BeginLoadData (), memasukkan data, lalu memanggil EndLoadData (). Ini mematikan beberapa perilaku internal dalam DataTable, seperti pemeliharaan indeks, dll. Lihat artikel ini untuk detail lebih lanjut.
sumber
Ketika Anda hanya berurusan dengan satu tabel saja, perbedaan praktis terbesar yang saya temukan adalah bahwa DataSet memiliki metode "HasChanges" tetapi DataTable tidak. Namun keduanya memiliki "GetChanges", sehingga Anda dapat menggunakannya dan menguji nol.
sumber
Objek DataTable mewakili data tabular sebagai dalam-memori, cache tabular dari baris, kolom, dan batasan. DataSet terdiri dari kumpulan objek DataTable yang dapat Anda hubungkan satu sama lain dengan objek DataRelation.
sumber