Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa mengunci tabel saat dibaca, menggunakan Entity Framework?

Saya hanya dapat benar-benar mencapai ini dengan secara manual mengeluarkan pernyataan kunci ke tabel. Ini melakukan menyelesaikan kunci meja, jadi berhati-hatilah! Dalam kasus saya, ini berguna untuk membuat antrean yang tidak ingin saya sentuh beberapa proses sekaligus.

using (Entities entities = new Entities())
using (TransactionScope scope = new TransactionScope())
{
    //Lock the table during this transaction
    entities.Database.ExecuteSqlCommand("SELECT TOP 1 KeyColumn FROM MyTable WITH (TABLOCKX, HOLDLOCK)");

    //Do your work with the locked table here...

    //Complete the scope here to commit, otherwise it will rollback
    //The table lock will be released after we exit the TransactionScope block
    scope.Complete();
}

Perbarui - Di Entity Framework 6, terutama dengan async / await kode, Anda perlu menangani transaksi secara berbeda. Ini mogok bagi kami setelah beberapa konversi.

using (Entities entities = new Entities())
using (DbContextTransaction scope = entities.Database.BeginTransaction())
{
    //Lock the table during this transaction
    entities.Database.ExecuteSqlCommand("SELECT TOP 1 KeyColumn FROM MyTable WITH (TABLOCKX, HOLDLOCK)");

    //Do your work with the locked table here...

    //Complete the scope here to commit, otherwise it will rollback
    //The table lock will be released after we exit the TransactionScope block
    scope.Commit();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL - Bagaimana cara menyimpan dan menavigasi hierarki?

  2. LPAD di SQL Server 2008

  3. Cara Mengembalikan Semua Batasan CHECK yang Tidak Tepercaya di SQL Server (Contoh T-SQL)

  4. Cara Mengimpor Database SQL Server ke Access 2016

  5. Fungsi vs Prosedur Tersimpan di SQL Server