Menambahkan Batasan yang Ada ke DataSet

Metode Fill dari DataAdapter hanya mengisi DataSet dengan kolom tabel dan baris dari sumber data; meskipun batasan umumnya diatur oleh sumber data, metode Fill tidak menambahkan informasi skema ini ke Himpunan Data secara default. Untuk mengisi Himpunan Data dengan informasi batasan kunci utama yang ada dari sumber data, Anda dapat memanggil metode FillSchemaDataAdapter, atau mengatur properti MissingSchemaAction dari DataAdapter ke AddWithKey sebelum memanggil Fill. Ini akan memastikan bahwa batasan kunci utama dalam DatSet mencerminkan batasan di sumber data. Informasi batasan kunci asing tidak disertakan dan harus dibuat secara eksplisit, seperti yang ditunjukkan dalam Batasan DataTable.

Menambahkan informasi skema ke Himpunan Data sebelum mengisinya dengan data memastikan bahwa batasan kunci primer disertakan dengan DataTable objek di Himpunan Data. Akibatnya, ketika panggilan tambahan untuk mengisi Himpunan Data dibuat, informasi kolom kunci utama digunakan untuk mencocokkan baris baru dari sumber data dengan baris saat ini di setiap DataTable, dan baris saat ini data dalam tabel ditimpa dengan data dari sumber data. Tanpa informasi skema, baris baru dari sumber data ditambahkan ke Himpunan Data, menghasilkan baris duplikat.

Catatan

Jika kolom dalam sumber data diidentifikasi sebagai penambahan otomatis, metode FillSchema, atau metode Fill dengan MissingSchemaActionaddWithKey, membuat DataColumn dengan properti AutoIncrement diatur ke true. Namun, Anda harus mengatur nilai AutoIncrementStep dan AutoIncrementSeed sendiri. Untuk informasi selengkapnya tentang kolom peningkatan otomatis, lihat Membuat Kolom AutoIncrement.

Menggunakan FillSchema atau mengatur MissingSchemaAction ke AddWithKey memerlukan pemrosesan ekstra di sumber data untuk menentukan informasi kolom kunci utama. Pemrosesan tambahan ini dapat menghambat performa. Jika Anda mengetahui informasi kunci utama pada waktu desain, kami sarankan Anda secara eksplisit menentukan kolom atau kolom kunci utama untuk mencapai performa optimal. Untuk informasi tentang mengatur informasi kunci primer secara eksplisit untuk tabel, lihat Menentukan Kunci Primer.

Contoh kode berikut menunjukkan cara menambahkan informasi skema ke Himpunan Data menggunakan FillSchema:

Dim custDataSet As New DataSet()  
  
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")  
custAdapter.Fill(custDataSet, "Customers")  
var custDataSet = new DataSet();  
  
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers");  
custAdapter.Fill(custDataSet, "Customers");  

Contoh kode berikut menunjukkan cara menambahkan informasi skema ke Himpunan Data menggunakan properti MissingSchemaAction.AddWithKey dari metode Fill :

Dim custDataSet As New DataSet()  
  
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey  
custAdapter.Fill(custDataSet, "Customers")  
var custDataSet = new DataSet();  
  
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;  
custAdapter.Fill(custDataSet, "Customers");  

Menangani beberapa kumpulan hasil

Jika DataAdapter menemukan beberapa kumpulan hasil yang dikembalikan dari SelectCommand, itu akan membuat beberapa tabel di Himpunan Data. Tabel akan diberi nama default inkremental berbasis nol TableN, dimulai dengan Table daripada "Table0". Jika nama tabel diteruskan sebagai argumen ke metode FillSchema, tabel akan diberi nama inkremental berbasis nol TableNameN, dimulai dengan TableName daripada "TableName0".

Catatan

Jika metode FillSchema objek OleDbDataAdapter dipanggil untuk perintah yang mengembalikan beberapa kumpulan hasil, hanya informasi skema dari kumpulan hasil pertama yang dikembalikan. Saat mengembalikan informasi skema untuk beberapa kumpulan hasil menggunakan OleDbDataAdapter, disarankan agar Anda menentukan MissingSchemaActionaddWithKey dan mendapatkan informasi skema saat memanggil metode Fill.

Lihat juga