2009-10-26 6 views
8

que je dois faire quelque chose comme çaLe verrouillage d'une table avec une sélection dans Entity Framework

select * from myTable with (xlock,holdlock) 

en utilisant Entity Framework. Est-ce possible? J'ai ouvert un TransactionScope avec le niveau d'isolement Serializable mais mes sélections ne verrouillent pas les tables. Je voudrais qu'ils se verrouillent jusqu'à ce que je complète la portée de la transaction.

Répondre

6

Il est possible, mais vous devez délivrer le SQL que vous ne pouvez pas ajouter la touche de verrouillage lors de l'utilisation LINQ (pour autant que je sache):

ObjectContext.ExecuteStoreCommand(
       string.Format("select 1 from [{0}] with (tablockx, holdlock) where 0 = 1", 
           tableName)); 

Si vous le faites dans un champ de transaction vous Tenez le verrou jusqu'à la fin de la transaction.

Un peu plus d'informations peuvent être trouvées ici:

http://peplowdown.wordpress.com/2010/07/18/locking-across-servers-table-locks-with-entity-framework/

Questions connexes