2009-10-26 19 views
8

में एक चयन के साथ एक मेज को लॉक करना मैं की जरूरत है इसइकाई की रूपरेखा

select * from myTable with (xlock,holdlock) 

इकाई की रूपरेखा का उपयोग कर की तरह कुछ करने के लिए। क्या यह संभव है? मैंने TransactionScope को Serializable अलगाव स्तर के साथ खोला है लेकिन मेरे चयन टेबल को लॉक नहीं कर रहे हैं। मैं उन्हें लॉक करना चाहता हूं जब तक कि मैं लेनदेन के दायरे को पूरा नहीं करता।

उत्तर

6

यह संभव है, लेकिन आप एसक्यूएल आप नहीं लॉकिंग संकेत जब LINQ का उपयोग कर (जहां तक ​​मुझे पता है) जोड़ सकते हैं जारी करने के लिए है:

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

यदि आप करते हैं कि एक सौदे के दायरे में तो आप जब तक आप लेनदेन पूरा नहीं करेंगे तब तक लॉक पकड़ लेंगे।

थोड़ा अधिक जानकारी यहां पाया जा सकता:

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

संबंधित मुद्दे