Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एंटिटी फ्रेमवर्क का उपयोग करके, मैं पढ़ने पर तालिका को कैसे लॉक कर सकता हूं?

मैं केवल एक टेबल पर लॉक स्टेटमेंट मैन्युअल रूप से जारी करके इसे वास्तव में पूरा करने में सक्षम था। यह एक पूर्ण करता है टेबल लॉक, इसलिए इससे सावधान रहें! मेरे मामले में यह एक कतार बनाने के लिए उपयोगी था जिसे मैं एक साथ कई प्रक्रियाओं को छूना नहीं चाहता था।

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();
}

अपडेट करें - एंटिटी फ्रेमवर्क 6 में, विशेष रूप से async . के साथ / await कोड, आपको लेनदेन को अलग तरीके से संभालने की आवश्यकता है। कुछ रूपांतरणों के बाद यह हमारे लिए क्रैश हो रहा था।

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. MS SQL सर्वर डेटाबेस में स्वचालित अनुक्रमणिका डीफ़्रेग्मेंटेशन

  2. एक बड़ी SQL स्क्रिप्ट निष्पादित करें (GO कमांड के साथ)

  3. क्या UNION ALL परिणाम सेट के क्रम की गारंटी देता है

  4. SQL सर्वर में पैरेंट टेबल, संदर्भ तालिका, विदेशी कुंजी बाधा नाम और कॉलम कैसे प्राप्त करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 71

  5. SQL सर्वर में ऑब्जेक्ट DIE बनाएं