Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Peningkatan Atom dengan Kerangka Entitas

Dengan Entity Framework Anda tidak dapat menjadikan ini sebagai operasi "atom". Anda memiliki langkah-langkahnya:

  1. Muat entitas dari database
  2. Ubah penghitung di memori
  3. Simpan entitas yang diubah ke database

Di antara langkah-langkah ini, klien lain dapat memuat entitas dari database yang masih memiliki nilai lama.

Cara terbaik untuk mengatasi situasi ini adalah dengan menggunakan konkurensi optimis . Ini pada dasarnya berarti bahwa perubahan pada langkah 3 tidak akan disimpan jika penghitung tidak lagi sama seperti saat Anda memuat entitas di langkah 1. Sebagai gantinya, Anda akan mendapatkan pengecualian yang dapat Anda tangani dengan memuat ulang entitas dan menerapkan kembali perubahan.

Alur kerjanya akan terlihat seperti ini:

  • Dalam Work entitas WordCount properti harus ditandai sebagai token konkurensi (anotasi atau Fluent API jika Code-First)
  • Muat entitas dari database
  • Ubah penghitung di memori
  • Hubungi SaveChanges dalam try-catch memblokir dan menangkap pengecualian dari jenis DbUpdateConcurrencyException
  • Jika terjadi pengecualian, muat ulang entitas di catch blokir dari database, terapkan perubahan lagi dan panggil SaveChanges lagi
  • Ulangi langkah terakhir sampai tidak ada lagi pengecualian

Dalam jawaban ini Anda dapat menemukan contoh kode untuk prosedur ini (menggunakan DbContext ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyimpan data deret waktu secara efisien:mySQL atau file datar? Banyak tabel (atau file) atau query dengan kondisi WHERE?

  2. Menyortir kueri MySQL berdasarkan Latitude/Longitude

  3. Pencarian peka huruf besar/kecil di Django, tetapi diabaikan di Mysql

  4. PHP Mengikat Wildcard

  5. Alternatif untuk mysql_real_escape_string tanpa terhubung ke DB