इकाई ढांचा - अतुल्यकालिक क्वेरी
Asynchronous programmingपृष्ठभूमि में संचालन निष्पादित करना शामिल है ताकि मुख्य धागा अपने स्वयं के संचालन को जारी रख सके। इस तरह मुख्य धागा उपयोगकर्ता इंटरफ़ेस को उत्तरदायी रख सकता है जबकि पृष्ठभूमि धागा हाथ में कार्य को संसाधित कर रहा है।
एंटिटी फ्रेमवर्क 6.0 डेटा की क्वेरी और बचत के लिए अतुल्यकालिक संचालन का समर्थन करता है।
अतुल्यकालिक संचालन आपके आवेदन को निम्नलिखित तरीकों से मदद कर सकता है -
- अपने एप्लिकेशन को उपयोगकर्ता इंटरैक्शन के लिए अधिक उत्तरदायी बनाएं
- अपने आवेदन के समग्र प्रदर्शन में सुधार करें
आप विभिन्न तरीकों से अतुल्यकालिक संचालन निष्पादित कर सकते हैं। लेकिन async / प्रतीक्षित कीवर्ड .NET फ्रेमवर्क 4.5 में पेश किए गए थे जो आपके काम को सरल बनाता है।
केवल एक चीज जिसे आपको अनुसरण करने की आवश्यकता है, वह है async / प्रतीक्षा पैटर्न जैसा कि निम्नलिखित कोड टुकड़ा द्वारा सचित्र है।
आइए निम्नलिखित उदाहरण (async / प्रतीक्षा का उपयोग किए बिना) पर एक नज़र डालें, जिसमें DatabaseOperations विधि डेटाबेस में एक नए छात्र को बचाता है और फिर डेटाबेस से सभी छात्रों को पुनर्प्राप्त करता है और अंत में कंसोल पर कुछ अतिरिक्त संदेश मुद्रित होता है।
class Program {
static void Main(string[] args) {
Console.WriteLine("Database Operations Started");
DatabaseOperations();
Console.WriteLine();
Console.WriteLine("Database Operations Completed");
Console.WriteLine();
Console.WriteLine("Entity Framework Tutorials");
Console.ReadKey();
}
public static void DatabaseOperations() {
using (var context = new UniContextEntities()) {
// Create a new student and save it
context.Students.Add(new Student {
FirstMidName = "Akram",
LastName = "Khan",
EnrollmentDate = DateTime.Parse(DateTime.Today.ToString())});
Console.WriteLine("Calling SaveChanges.");
context.SaveChanges();
Console.WriteLine("SaveChanges completed.");
// Query for all Students ordered by first name
var students = (from s in context.Students
orderby s.FirstMidName select s).ToList();
// Write all students out to Console
Console.WriteLine();
Console.WriteLine("All Student:");
foreach (var student in students) {
string name = student.FirstMidName + " " + student.LastName;
Console.WriteLine(" " + name);
}
}
}
}
जब उपरोक्त कोड निष्पादित किया जाता है, तो आपको निम्न आउटपुट प्राप्त होंगे -
Calling SaveChanges.
SaveChanges completed.
All Student:
Akram Khan
Ali Khan
Ali Alexander
Arturo Anand
Bill Gates
Gytis Barzdukas
Laura Nornan
Meredith fllonso
Nino Olioetto
Peggy Justice
Yan Li
Entity Framework Tutorials
आइए नए async का उपयोग करें और कीवर्ड की प्रतीक्षा करें और Program.cs में निम्नलिखित परिवर्तन करें
System.Data.Entity नामस्थान जोड़ें, जो EF को async एक्सटेंशन मेथड देगा।
System.Threading.Tasks नाम स्थान जोड़ें जो हमें टास्क प्रकार का उपयोग करने की अनुमति देगा।
अपडेट करें DatabaseOperations के रूप में चिह्नित किया जाना है async और वापस आ जाओ Task।
SaveChanges के Async संस्करण को कॉल करें और इसके पूरा होने का इंतजार करें।
ToList के Async संस्करण को कॉल करें और परिणाम की प्रतीक्षा करें।
class Program {
static void Main(string[] args) {
var task = DatabaseOperations();
Console.WriteLine();
Console.WriteLine("Entity Framework Tutorials");
task.Wait();
Console.ReadKey();
}
public static async Task DatabaseOperations() {
using (var context = new UniContextEntities()) {
// Create a new blog and save it
context.Students.Add(new Student {
FirstMidName = "Salman",
LastName = "Khan",
EnrollmentDate = DateTime.Parse(DateTime.Today.ToString())});
Console.WriteLine("Calling SaveChanges.");
await context.SaveChangesAsync();
Console.WriteLine("SaveChanges completed.");
// Query for all Students ordered by first name
var students = await (from s in context.Students
orderby s.FirstMidName select s).ToListAsync();
// Write all students out to Console
Console.WriteLine();
Console.WriteLine("All Student:");
foreach (var student in students) {
string name = student.FirstMidName + " " + student.LastName;
Console.WriteLine(" " + name);
}
}
}
}
निष्पादन पर, यह निम्नलिखित आउटपुट का उत्पादन करेगा।
Calling SaveChanges.
Entity Framework Tutorials
SaveChanges completed.
All Student:
Akram Khan
Ali Khan
Ali Alexander
Arturo Anand
Bill Gates
Gytis Barzdukas
Laura Nornan
Meredith fllonso
Nino Olioetto
Peggy Justice
Salman Khan
Yan Li
अब जब कोड अतुल्यकालिक है, तो आप अपने कार्यक्रम के एक अलग निष्पादन प्रवाह का निरीक्षण कर सकते हैं।
SaveChanges डेटाबेस में नए छात्र को धक्का देना शुरू कर देता है और फिर डेटाबेसऑपरेशन विधि रिटर्न (भले ही इसे निष्पादित करना समाप्त नहीं हुआ है) और मुख्य विधि में प्रोग्राम का प्रवाह जारी रहता है।
संदेश तब कंसोल को लिखा जाता है।
डेटाबेस ऑपरेशन पूरा होने तक प्रतीक्षा थ्रेड पर प्रबंधित थ्रेड अवरुद्ध है। एक बार जब यह पूरा हो जाता है, तो हमारे DatabaseOperations के शेष को निष्पादित किया जाएगा।
SaveChanges पूरा करता है।
डेटाबेस से सभी छात्र को लिया गया और कंसोल को लिखा गया।
हम अनुशंसा करते हैं कि आप बेहतर समझ के लिए चरण-दर-चरण तरीके से उपरोक्त उदाहरण को निष्पादित करें।