Tanggung Jawab Pengembang Dalam Mengganti Perilaku Default

LINQ to SQL tidak menerapkan persyaratan berikut, tetapi perilaku tidak ditentukan jika persyaratan ini tidak terpenuhi.

  • Metode pengambil alihan tidak boleh memanggil SubmitChanges atau Attach. LINQ to SQL menampilkan pengecualian jika metode ini dipanggil dalam metode ambil alih.

  • Metode ambil alih tidak dapat digunakan untuk memulai, melakukan, atau menghentikan transaksi. Operasi SubmitChanges dilakukan pada transaksi. Transaksi bertumpuk dari dalam dapat mengganggu transaksi luar. Metode penggantian beban dapat memulai transaksi hanya setelah metode tersebut menentukan bahwa operasi tidak dilakukan di Transaction.

  • Metode ambil alih diharapkan mengikuti pemetaan konkurensi optimis yang berlaku. Metode ambil alih diharapkan menampilkan ChangeConflictException ketika konflik konkurensi optimis terjadi. LINQ to SQL menangkap pengecualian ini sehingga Anda dapat memproses dengan benar opsi SubmitChanges yang disediakan di SubmitChanges.

  • Metode buat (Insert) dan ambil alih Update diharapkan mengalirkan kembali nilai untuk kolom yang dibuat basis data ke anggota objek yang sesuai saat operasi berhasil diselesaikan.

    Misalnya, jika Order.OrderID dipetakan ke kolom identitas (kunci utama autoincrement), maka metode ambil alih InsertOrder() harus mengambil ID yang dibuat basis data dan mengatur anggota Order.OrderID ke ID tersebut. Demikian juga, anggota stempel waktu harus diperbarui ke nilai stempel waktu yang dihasilkan database untuk memastikan bahwa objek yang diperbarui konsisten. Kegagalan untuk menyebarkan nilai yang dihasilkan basis data dapat menyebabkan inkonsistensi antara basis data dan objek yang dilacak oleh DataContext.

  • Pengguna bertanggung jawab untuk memanggil API dinamis yang benar. Misalnya, dalam metode penggantian pembaruan, hanya ExecuteDynamicUpdate yang dapat dipanggil. LINQ to SQL tidak mendeteksi atau memverifikasi apakah metode dinamis yang dipanggil cocok dengan operasi yang berlaku. Jika metode yang tidak dapat diterapkan dipanggil (misalnya, ExecuteDynamicDelete untuk objek yang akan diperbarui), hasilnya tidak ditentukan.

  • Akhirnya, metode utama diharapkan untuk melakukan operasi yang dinyatakan. Semantik operasi LINQ to SQL seperti pemuatan cepat, pemuatan yang ditangguhkan, dan SubmitChanges) memerlukan penggantian untuk menyediakan layanan yang disebutkan. Misalnya, ambil alih beban yang hanya mengembalikan koleksi kosong tanpa memeriksa konten dalam database kemungkinan akan menghasilkan data yang tidak konsisten.

Lihat juga