EF6 के साथ आपके पास एक नया लेन-देन है जिसका उपयोग किया जा सकता है:
using (var context = new PostEntityContainer())
{
using (var dbcxtransaction = context.Database.BeginTransaction())
{
try
{
PostInformation NewPost = new PostInformation()
{
PostId = 101,
Content = "This is my first Post related to Entity Model",
Title = "Transaction in EF 6 beta"
};
context.Post_Details.Add(NewPost);
context.SaveChanges();
PostAdditionalInformation PostInformation = new PostAdditionalInformation()
{
PostId = (101),
PostName = "Working With Transaction in Entity Model 6 Beta Version"
};
context.PostAddtional_Details.Add(PostInformation);
context.SaveChanges();
dbcxtransaction.Commit();
}
catch
{
dbcxtransaction.Rollback();
}
}
}
क्या रोलबैक की ज़रूरत तब होती है जब चीजें बग़ल में होती हैं? मैं उत्सुक हूं क्योंकि प्रतिबद्ध विवरण कहता है: "अंतर्निहित स्टोर लेनदेन को पूरा करता है।"
जबकि रोलबैक विवरण कहता है: "अंतर्निहित स्टोर लेनदेन को वापस करता है।"
यह मुझे उत्सुक बनाता है, क्योंकि यह मुझे दिखता है कि अगर कमिट नहीं कहा जाता है, तो पहले निष्पादित कमांड संग्रहीत नहीं की जाएगी (जो मेरे लिए तर्कसंगत लगता है)। लेकिन अगर ऐसा है, तो रोलबैक फ़ंक्शन को कॉल करने का क्या कारण होगा? EF5 में मैंने TransactionScope का उपयोग किया था जिसमें रोलबैक फ़ंक्शन (केवल एक पूर्ण) नहीं था जो मेरे लिए तर्कसंगत लगता था। MS DTC कारणों के कारण मैं अब TransactionScope का उपयोग नहीं कर सकता, लेकिन मैं ऊपर दिए गए उदाहरण की तरह एक कोशिश पकड़ने का भी उपयोग नहीं कर सकता (यानी, मुझे केवल कमिट की आवश्यकता है)।