2016-10-18 1 views
0

Я хочу заблокировать таблицу за определенное количество времени в SQL Server. Я использую C# на уровне кода. Как я могу достичь этого, мне также нужно проверить, что таблица заблокирована или нет. У меня мало знаний о блокировании таблиц в SQL Server. Я хочу достичь этого с помощью структуры сущностей. Буду признателен за любую оказанную помощь.Заблокировать таблицу SQL-сервера за заданное время и проверить, заблокирована ли она

+1

http://stackoverflow.com/questions/25273157/t-sql-lock-a-table-manually- для-some-minutes – Vincent

+1

Это не может быть сделано с чистой сущностью. У вас будет ** использовать **. –

ответ

1

Вы можете попробовать, как показано ниже.

using (var context = new YourContext()) 
    { 
    using (var dbContextTransaction = context.Database.BeginTransaction()) 
    { 
     //Lock the table during this transaction 
     context.Database.ExecuteSqlCommand("SELECT 1 FROM YourTable WITH (TABLOCKX) 
    WAITFOR DELAY '00:03:00'"); 

      //your work here 

      dbContextTransaction.Commit(); 
     } 
} 

Примечание: замок таблица будет выпущен после того, как он выходит из BeginTransaction блока

+1

небольшое редактирование. Я должен быть 'dbContextTransaction.Commit()' вместо 'scope.Commit()' и Table в команде SQL для замены фактическим именем таблицы –

+1

Спасибо за исправление. Я редактировал это :) – Sampath