Verrouillage d'une table avec une sélection dans Entity Framework

entity-framework table-locking transactionscope

Question

J'ai besoin de faire quelque chose comme ça

select * from myTable with (xlock,holdlock)

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

Réponse populaire

C'est possible, mais vous devez émettre du code SQL; vous ne pouvez pas ajouter d'indication de verrouillage lorsque vous utilisez LINQ (pour autant que je sache):

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

Si vous faites cela dans une étendue de transaction, vous garderez 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/



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow