public class TestBL
{
public static void AddFolder(string folderName)
{
using (var ts = new TransactionScope())
{
using (var dc = new TestDataContext())
{
var folder = new Folder { FolderName = folderName };
dc.Folders.InsertOnSubmit(folder);
dc.SubmitChanges();
AddFile("test1.xyz", folder.Id);
AddFile("test2.xyz", folder.Id);
AddFile("test3.xyz", folder.Id);
dc.SubmitChanges();
}
ts.Complete();
}
}
public static void AddFile(string filename, int folderId)
{
using (var dc = new TestDataContext())
{
dc.Files.InsertOnSubmit(
new File { Filename = filename, FolderId = folderId });
dc.SubmitChanges();
}
}
}
यह नेस्टेड डेटाकॉन्टेक्स्ट (अनचाहे) का एक उदाहरण है। समस्या तब शुरू होती है जब हमारे छोटे प्रयोग (जैसा कि ऊपर दिखाया गया है) में एक ट्रांज़ेक्शनस्कोप जोड़ा जाता है। AddFolder फ़ंक्शन पर पहला AddFile लेनदेन को डीटीसी (जो सभी माध्यमों से खराब है) को बढ़ा देगा, क्योंकि AddFile नए डेटा कॉन्टेक्स्ट को प्रारंभ करता है, इस प्रकार डीबी को दूसरा कनेक्शन खोलता है।बीएल में नेस्टेड डेटाैकेंटेक्स्ट को कैसे संभालें?
- मैं नेस्टेड डेटाकॉन्टेक्स्ट का उपयोग कैसे कर सकता हूं जो डीटीसी उपयोग नहीं करेगा?
- क्या यह सब सिर्फ सादा गलत है? क्या मुझे डेटाकॉन्टेक्स्ट का अलग-अलग उपयोग करना चाहिए?
दुर्भाग्य से मुझे लगा कि इस प्रश्न को ध्यान में नहीं मिला है और इसका पूरी तरह उत्तर नहीं दिया गया है :( –