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

एंटिटी फ्रेमवर्क 6 ट्रांजेक्शन रोलबैक

आपको Rollback पर कॉल करने की आवश्यकता नहीं है मैन्युअल रूप से क्योंकि आप using बयान।

DbContextTransaction.Dispose using . के अंत में विधि को कॉल किया जाएगा खंड मैथा। और यह स्वचालित रूप से लेनदेन को रोलबैक कर देगा यदि लेनदेन सफलतापूर्वक प्रतिबद्ध नहीं है (अपवाद नहीं कहा जाता है या सामना नहीं किया जाता है)। SqlInternalTransaction.Dispose का स्रोत कोड निम्नलिखित है:विधि (DbContextTransaction.Dispose SqlServer प्रदाता का उपयोग करते समय अंततः इसे सौंप देगा):

private void Dispose(bool disposing)
{
    // ...
    if (disposing && this._innerConnection != null)
    {
        this._disposing = true;
        this.Rollback();
    }
}

आप देखिए, यह जांचता है कि क्या _innerConnection शून्य नहीं है, यदि नहीं, तो लेन-देन को रोलबैक करें (यदि प्रतिबद्ध है, _innerConnection शून्य होगा)। आइए देखें क्या Commit करता है:

internal void Commit() 
{
    // Ignore many details here...

    this._innerConnection.ExecuteTransaction(...);

    if (!this.IsZombied && !this._innerConnection.IsYukonOrNewer)
    {
        // Zombie() method will set _innerConnection to null
        this.Zombie();
    }
    else
    {
        this.ZombieParent();
    }

    // Ignore many details here...
}

internal void Zombie()
{
    this.ZombieParent();

    SqlInternalConnection innerConnection = this._innerConnection;

    // Set the _innerConnection to null
    this._innerConnection = null;

    if (innerConnection != null)
    {
        innerConnection.DisconnectTransaction(this);
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL NVARCHAR और VARCHAR सीमाएं

  2. SQL सर्वर में ON DELETE CASCADE के साथ विदेशी कुंजी बाधा कैसे बनाएं - SQL सर्वर / TSQL ट्यूटोरियल भाग 80

  3. एक डेटाबेस मेल प्रोफाइल बनाएं (SSMS)

  4. विजुअल स्टूडियो 2017 इंस्टालर प्रोजेक्ट के साथ SQL सर्वर नामित उदाहरण

  5. SQL सर्वर 2008 में तालिका उपनाम के साथ अद्यतन SQL कैसे लिखें?