शीर्ष 50 एंटिटी फ्रेमवर्क साक्षात्कार प्रश्न और उत्तर (2026)

एंटिटी फ्रेमवर्क इंटरव्यू की तैयारी का मतलब है उन सवालों का अनुमान लगाना जो वास्तविक क्षमता को उजागर करते हैं। एंटिटी फ्रेमवर्क इंटरव्यू के सवाल सोचने के तरीके, प्रदर्शन के प्रति जागरूकता और उम्मीदवारों द्वारा अवधारणाओं को व्यवहार में लाने की क्षमता को दर्शाते हैं।
एंटिटी फ्रेमवर्क में महारत हासिल करने से आधुनिक विकास के विभिन्न क्षेत्रों में अवसर खुलते हैं, डेटा-संचालित प्लेटफॉर्म से लेकर क्लाउड सेवाओं तक। व्यावहारिक अनुभव से विश्लेषणात्मक क्षमता बढ़ती है, तकनीकी ज्ञान मजबूत होता है और टीमों को सहयोग मिलता है। भर्ती करने वाले प्रमुख नेतृत्वकर्ता व्यावहारिक समस्या-समाधान, स्केलेबल डिज़ाइन, कनिष्ठों को मार्गदर्शन देने और नए स्नातकों के लिए विकास के अवसरों को महत्व देते हैं। अधिक पढ़ें…
👉 मुफ़्त PDF डाउनलोड करें: एंटिटी फ्रेमवर्क इंटरव्यू प्रश्न और उत्तर
शीर्ष एंटिटी फ्रेमवर्क साक्षात्कार प्रश्न और उत्तर
1) एंटिटी फ्रेमवर्क क्या है और इसका उपयोग क्यों किया जाता है?
एंटिटी फ्रेमवर्क (EF) है Microsoft.NET के लिए 's ORM (ऑब्जेक्ट-रिलेशनल मैपिंग) फ्रेमवर्क जो यह डेवलपर्स को रॉ SQL के बजाय स्ट्रॉन्गली टाइप्ड .NET ऑब्जेक्ट्स के रूप में डेटा के साथ काम करने की अनुमति देकर डेटाबेस इंटरैक्शन को सरल बनाता है।यह एब्स्ट्रैक्शन डेवलपर्स को परिचित C# कंस्ट्रक्ट्स का उपयोग करके CRUD (क्रिएट, रीड, अपडेट, डिलीट) ऑपरेशन करने में सक्षम बनाता है, और फ्रेमवर्क इन ऑपरेशनों को अनुकूलित SQL क्वेरी में बदलने का काम करता है। EF अनावश्यक डेटा-एक्सेस कोड को कम करता है, रखरखाव में सुधार करता है और कंपाइल-टाइम टाइप सेफ्टी को लागू करने में मदद करता है।
उदाहरण के लिए, SQL लिखने के बजाय, आप निम्न का उपयोग कर सकते हैं:
var customers = context.Customers.Where(c => c.IsActive).ToList();
EF इस LINQ क्वेरी को SQL में अनुवादित करेगा, इसे डेटाबेस के विरुद्ध निष्पादित करेगा और परिणामों को ऑब्जेक्ट के रूप में लौटाएगा।
2) कोड फर्स्ट, डेटाबेस फर्स्ट और मॉडल फर्स्ट दृष्टिकोणों के बीच अंतर स्पष्ट कीजिए।
एंटिटी फ्रेमवर्क तीन मुख्य विकास दृष्टिकोणों का समर्थन करता है:
| दृष्टिकोण | कब इस्तेमाल करें | क्या होता है |
|---|---|---|
| कोड प्रथम | नई परियोजनाएं या डोमेन-आधारित डिज़ाइन | आप एंटिटी क्लास को परिभाषित करते हैं। EF कोड से डेटाबेस स्कीमा उत्पन्न करता है। |
| डेटाबेस प्रथम | मौजूदा डेटाबेस | EF मौजूदा स्कीमा से एंटिटी क्लास और कॉन्टेक्स्ट उत्पन्न करता है। |
| मॉडल प्रथम | जब आप दृश्य डिजाइन को प्राथमिकता देते हैं | आप विजुअल डिजाइनर (एंटिटी डिजाइनर) में मॉडल डिजाइन करते हैं, और EF क्लास और डेटाबेस दोनों उत्पन्न करता है। |
प्रत्येक दृष्टिकोण अलग-अलग परिस्थितियों के लिए उपयुक्त है: कोड प्रथम एजाइल डेवलपमेंट में यह लोकप्रिय है। डेटाबेस प्रथम इसे पुराने डेटाबेस के साथ प्राथमिकता दी जाती है, और मॉडल प्रथम यह उन मामलों के लिए उपयुक्त है जहां दृश्य मॉडलिंग महत्वपूर्ण है।
3) DbContext क्या है और EF में इसकी क्या भूमिका है?
DbContext यह प्राथमिक वर्ग है जो प्रबंधन करता है डेटाबेस के साथ सत्रयह एंटिटी परिवर्तनों को ट्रैक करता है और डेटाबेस में डेटा को वापस सहेजने का समन्वय करता है। यह आपके C# एप्लिकेशन और डेटाबेस के बीच एक सेतु का काम करता है। DbContextआप परिभाषित करें DbSet<TEntity> प्रॉपर्टीज़, जो एंटिटीज़ के संग्रह को दर्शाती हैं और डेटाबेस में टेबल से मैप होती हैं।
उदाहरण:
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
यहाँ, Products यह CRUD ऑपरेशन करने के लिए एक संग्रह के रूप में कार्य करता है। EF इस संदर्भ का उपयोग करता है। ट्रैक ऑब्जेक्ट की स्थिति और SQL कमांड जनरेट करें SaveChanges().
4) एंटिटी फ्रेमवर्क में माइग्रेशन क्या हैं और उनका उपयोग कैसे किया जाता है?
माइग्रेशन ये ट्रैक करने और लागू करने का एक तंत्र हैं स्कीमा परिवर्तन समय के साथ डेटाबेस में डेटा का स्थानांतरण होता रहता है। जैसे-जैसे आपका मॉडल विकसित होता है, माइग्रेशन SQL स्क्रिप्ट को मैन्युअल रूप से संशोधित किए बिना डेटाबेस को सिंक्रनाइज़ रखने में मदद करते हैं। कोड फर्स्ट के साथ, आप निम्न जैसे कमांड का उपयोग करते हैं:
Add-Migration InitialCreate Update-Database
यह माइग्रेशन क्लास उत्पन्न करता है जो स्कीमा परिवर्तनों को परिभाषित करते हैं और उन्हें डेटाबेस पर लागू करते हैं। माइग्रेशन डेटाबेस स्कीमा के लिए वर्ज़न कंट्रोल की सुविधा प्रदान करते हैं और सहयोगात्मक विकास को सुगम बनाते हैं।
5) लेज़ी लोडिंग, ईगर लोडिंग और एक्सप्लिसिट लोडिंग का वर्णन कीजिए।
EF में संबंधित डेटा को कुशलतापूर्वक लोड करना महत्वपूर्ण है। यहाँ एक तुलना दी गई है:
| रणनीति | जब यह चलता है | विशिष्ट उपयोग |
|---|---|---|
| आलसी लोड हो रहा है | पहली बार एक्सेस करने पर संबंधित डेटा लोड हो जाता है | इसका उपयोग तब करें जब संबंधित डेटा की हमेशा आवश्यकता न हो। |
| उत्सुकता से लोड हो रहा है | संबंधित डेटा अग्रिम रूप से लोड किया जाता है .Include() |
इसका उपयोग तब करें जब आपको संबंधित डेटा की आवश्यकता हो। |
| स्पष्ट लोड हो रहा है | क्वेरी के बाद मैन्युअल रूप से लोड किया गया | संबंधित डेटा कब लोड होगा, इस पर पूर्ण नियंत्रण प्रदान करता है। |
उदाहरण के लिए:
var orders = context.Orders.Include(o => o.Customer).ToList(); // Eager
लेज़ी लोडिंग से शुरुआती क्वेरीज़ कम करने में मदद मिलती है, लेकिन इससे कुछ समस्याएं हो सकती हैं। N+1 क्वेरी समस्याएं यदि सावधानीपूर्वक उपयोग न किया जाए।
6) एंटिटी फ्रेमवर्क में चेंज ट्रैकिंग क्या है?
परिवर्तन ट्रैकिंग, EF का आंतरिक तंत्र है। इकाई की स्थिति में होने वाले परिवर्तनों की निगरानी करें क्वेरी निष्पादित होने के बाद। जब किसी इकाई को पुनः प्राप्त किया जाता है DbContextइस पर नज़र रखी जाती है। इसके गुणों में होने वाले किसी भी बदलाव को नोट किया जाता है, और जब SaveChanges() जब इसे कॉल किया जाता है, तो EF उपयुक्त SQL उत्पन्न करता है। INSERT, UPDATEया, DELETE कथन। केवल पढ़ने वाले परिदृश्यों के लिए जहां ट्रैकिंग अनावश्यक है, AsNoTracking() परिवर्तन ट्रैकिंग को अक्षम करके प्रदर्शन में सुधार करता है।
7) एंटिटी फ्रेमवर्क समवर्ती टकरावों को कैसे संभालता है?
समवर्ती नियंत्रण यह सुनिश्चित करता है कि एक ही डेटा को अपडेट करने वाले कई उपयोगकर्ता अनजाने में एक-दूसरे के परिवर्तनों को ओवरराइट न कर दें। EF इसका उपयोग करता है। आशावादी समवर्तीता डिफ़ॉल्ट रूप से। एक सामान्य दृष्टिकोण में एक जोड़ना शामिल है। समवर्ती टोकन (जैसा RowVersion टाइमस्टैम्प)। EF इस टोकन की जाँच करता है SaveChanges()और यदि यह डेटाबेस संस्करण से भिन्न है, तो DbUpdateConcurrencyException एक त्रुटि उत्पन्न होती है, जो किसी टकराव का संकेत देती है। डेवलपर इस अपवाद को संभालकर पुनः प्रयास कर सकते हैं या डेटा संबंधी विसंगतियों को दूर कर सकते हैं।
8) ईएफ में नेविगेशन प्रॉपर्टीज़ क्या हैं?
नेविगेशन गुण संस्थाओं के बीच संबंधों को परिभाषित करते हैं। वे EF को अनुमति देते हैं एसोसिएशनों को नेविगेट करें (उदाहरण के लिए, एक से अनेक संबंध) बिना मैन्युअल जॉइन के:
public class Order
{
public int Id { get; set; }
public Customer Customer { get; set; }
}
यहाँ, Customer यह एक नेविगेशन प्रॉपर्टी है जो लिंक करती है Order इसके संबंधित CustomerEF क्वेरी के दौरान स्वचालित रूप से संबंध और जॉइन बनाने के लिए इन प्रॉपर्टीज़ का उपयोग करता है। नेविगेशन प्रॉपर्टीज़ इनके साथ काम करती हैं। विदेशी कुंजी रिश्तों को आदर्श रूप देने के लिए।
9) AsNoTracking() का उद्देश्य क्या है?
AsNoTracking() यह क्वेरी के लिए परिवर्तन ट्रैकिंग को अक्षम करता है, जो इसके लिए फायदेमंद है केवल पढ़ने के लिए उन ऑपरेशनों में जहां आप प्राप्त एंटिटीज़ को अपडेट करने का इरादा नहीं रखते हैं, यह सुविधा काम आती है। इससे मेमोरी का उपयोग और ट्रैकिंग ओवरहेड कम हो जाता है, जिससे परफॉर्मेंस बेहतर होती है। यह विशेष रूप से तब उपयोगी होता है जब आप बड़े डेटा सेट को बिना संशोधित किए प्राप्त कर रहे हों।
10) कंपाइल्ड क्वेरी क्या होती हैं और आपको इनका उपयोग कब करना चाहिए?
कंपाइल किए गए क्वेरी प्रदर्शन को बेहतर बनाने की एक तकनीक है। जब कोई LINQ क्वेरी चलाई जाती है, तो EF आमतौर पर इसे हर बार SQL में अनुवादित करता है। कंपाइल किए गए क्वेरी के साथ, यह अनुवाद केवल एक बार किया जाता है, और परिणामी डेलीगेट का पुन: उपयोग किया जाता है - जिससे बार-बार चलाई जाने वाली या जटिल क्वेरी के लिए ओवरहेड कम हो जाता है। इनका उपयोग करें उच्च यातायात ऐसे परिदृश्य जहां एक ही क्वेरी अलग-अलग मापदंडों के साथ बार-बार चलती है।
11) एंटिटी फ्रेमवर्क में एंटिटी स्टेट्स क्या हैं, और वे SaveChanges() को कैसे प्रभावित करते हैं?
एंटिटी फ्रेमवर्क प्रत्येक इकाई को ट्रैक करता है राज्य यह निर्धारित करने के लिए कि किस डेटाबेस ऑपरेशन को निष्पादित किया जाना है SaveChanges()मुख्य इकाई राज्य इस प्रकार हैं:
| राज्य | विवरण | Operaट्रिगर किया गया |
|---|---|---|
| जब जोड़ा गया | नई इकाई डाली जानी है | INSERT |
| संशोधित | मौजूदा इकाई अपडेट की गई | UPDATE |
| हटाए गए | हटाने के लिए चिह्नित इकाई | DELETE |
| स्थिर | कोई परिवर्तन नहीं पाया गया | कोई नहीं |
| जुदा जुदा | संदर्भ द्वारा ट्रैक नहीं किया गया | कोई नहीं |
जब तुमने फोन किया SaveChanges()EF इकाई की स्थिति का निरीक्षण करता है और संबंधित SQL कमांड निष्पादित करता है। उदाहरण के लिए, एक नई इकाई को जोड़ा जाता है। DbSet चिह्नित किया जाएगा जब जोड़ा गयाजिसके परिणामस्वरूप ए INSERT क्वेरी.
उदाहरण:
context.Entry(product).State = EntityState.Modified; context.SaveChanges();
यह एंटिटी के लिए डेटाबेस रिकॉर्ड को स्पष्ट रूप से अपडेट करता है।
समझ की स्थिति यह डेटा सिंक्रोनाइज़ेशन और प्रदर्शन पर बेहतर नियंत्रण सुनिश्चित करता है।
12) एंटिटी फ्रेमवर्क का उपयोग करने के क्या फायदे और नुकसान हैं?
एंटिटी फ्रेमवर्क कई मजबूत लाभ प्रदान करता है, लेकिन आपके उपयोग के मामले के आधार पर कुछ कमियां भी हैं।
| फायदे | नुकसान |
|---|---|
| LINQ और ऑब्जेक्ट मॉडल के माध्यम से डेटा तक पहुंच को सरल बनाता है। | ADO.NET की तुलना में प्रदर्शन में कुछ अतिरिक्त भार होता है। |
| अनावश्यक SQL कोड को कम करता है। | जटिल क्वेरी अक्षम SQL उत्पन्न कर सकती हैं। |
| यह कई डेटाबेस प्रदाताओं का समर्थन करता है। | जनरेट किए गए SQL स्टेटमेंट को डीबग करना कठिन है। |
| स्ट्रॉन्गली टाइप्ड होने के कारण कंपाइल-टाइम सुरक्षा में सुधार होता है। | बड़े समूहों में प्रवास संबंधी संघर्ष संभव हैं। |
| कोड फर्स्ट के साथ तीव्र प्रोटोटाइपिंग को सक्षम बनाता है। | Less बारीक रूप से तैयार की गई क्वेरी पर नियंत्रण। |
अधिकतम प्रदर्शन की आवश्यकता वाले बड़े पैमाने के सिस्टमों के लिए, डेवलपर्स अभी भी मिश्रण कर सकते हैं। ईएफ के साथ रॉ एसक्यूएल अनुकूलन के लिए।
13) एंटिटी फ्रेमवर्क संबंधों (एक-से-एक, एक-से-अनेक, अनेक-से-अनेक) को कैसे संभालता है?
एंटिटी फ्रेमवर्क संबंधों को प्रबंधित करता है नेविगेशन गुण और विदेशी प्रमुख संघ.
रिश्तों के प्रकार इस प्रकार हैं:
| संबंध प्रकार | विवरण | उदाहरण |
|---|---|---|
| एक से एक | प्रत्येक एंटिटी इंस्टेंस का एक संबंधित एंटिटी होता है। | User ↔ UserProfile |
| कई लोगों के लिए एक | एक इकाई कई अन्य इकाइयों से संबंधित होती है। | Customer → Orders |
| अनेक-से-अनेक | अनेक संस्थाएँ एक दूसरे से संबंधित हैं। | Student ↔ Course |
का उदाहरण है कई लोगों के लिए एक संबंध:
public class Customer
{
public int CustomerId { get; set; }
public ICollection<Order> Orders { get; set; }
}
EF स्वचालित रूप से विदेशी कुंजियाँ उत्पन्न करता है और उन्हें संभालता है कैस्केड डिलीट नियम कॉन्फ़िगरेशन पर निर्भर करता है.
आप भी उपयोग कर सकते हैं फ्लुएंट एपीआई अधिक स्पष्ट संबंध मानचित्रण के लिए।
14) LINQ टू एंटिटीज और LINQ टू SQL में क्या अंतर है?
| Feature | इकाइयों के लिए LINQ | LINQ से SQL |
|---|---|---|
| समर्थित डेटाबेस | एकाधिक (एसक्यूएल सर्वर, Oracle, MySQL, आदि) | केवल SQL सर्वर |
| अंतर्निहित ढांचा | इकाई की रूपरेखा | ADO.NET |
| आदर्श | वैचारिक इकाई मॉडल | केवल डेटाबेस टेबल |
| मैपिंग | जटिल मैपिंग (वंशानुक्रम, संबंध) | प्रत्यक्ष तालिका मानचित्रण |
| भविष्य का समर्थन | सक्रिय रूप से समर्थित | पदावनत |
इकाइयों के लिए LINQ यह एंटिटी फ्रेमवर्क का हिस्सा है और अधिक बहुमुखी है, जबकि LINQ से SQL यह SQL सर्वर और सरल उपयोग के मामलों तक सीमित है।
इसलिए, उद्यम-स्तरीय विकास के लिए LINQ टू एंटिटीज की अनुशंसा की जाती है।
15) ऑब्जेक्टकॉन्टेक्स्ट और डीबीकॉन्टेक्स्ट में क्या अंतर है?
| Feature | ऑब्जेक्टकॉन्टेक्स्ट | डीबीकॉन्टेक्स्ट |
|---|---|---|
| ढांचा | पहले के ईएफ संस्करण | EF 4.1+ में सरलीकृत API |
| जटिलता | अधिक वाचाल | हल्का और आसान |
| प्रदर्शन | थोड़ा तेज़ लेकिन इस्तेमाल करना कठिन | न्यूनतम लागत के साथ सरलीकृत |
| ट्रैकिंग बदलें | मैन्युअल कॉन्फ़िगरेशन आवश्यक | स्वचालित ट्रैकिंग |
| पसंदीदा उपयोग | विरासती तंत्र | आधुनिक ईएफ / ईएफ कोर परियोजनाएँ |
DbContext आंतरिक रूप से लपेटता है ObjectContext लेकिन यह एक स्वच्छ और अधिक सहज एपीआई प्रदान करता है। अधिकांश वर्तमान .NET अनुप्रयोगों को इसका उपयोग करना चाहिए। DbContext.
16) एंटिटी फ्रेमवर्क में किसी एंटिटी के जीवनचक्र की व्याख्या कीजिए।
किसी इकाई का जीवनचक्र उसके राज्य संक्रमण सृजन से लेकर निरंतरता तक:
- निर्माण – इकाई को मेमोरी में स्थापित किया जाता है (स्थिति: जुदा जुदा).
- अनुलग्नक – संदर्भ में जोड़ा गया
DbSet.Add()(राज्य: जब जोड़ा गया). - परिवर्तन – परिवर्तन स्वचालित रूप से पता लगाए जाते हैं (स्थिति: संशोधित).
- हठ -
SaveChanges()called → SQL कमांड निष्पादित किए गए। - विलोपन – इकाई को इस प्रकार चिह्नित किया गया है हटाए गए और डेटाबेस से हटा दिया गया।
इस जीवनचक्र को समझने से डेटा संबंधी समस्याओं को डीबग करने और ईएफ संदर्भ प्रबंधन को अनुकूलित करने में मदद मिलती है।
17) एंटिटी फ्रेमवर्क में फ्लुएंट एपीआई का क्या उपयोग है?
RSI फ्लुएंट एपीआई यह मॉडल संबंधों, बाधाओं और मैपिंग को कॉन्फ़िगर करने का एक प्रोग्रामेटिक तरीका प्रदान करता है, जिसका उपयोग अक्सर किया जाता है। OnModelCreating() आपकी विधि DbContext.
यह उन विन्यासों पर सूक्ष्म नियंत्रण प्रदान करता है जो डेटा एनोटेशन व्यक्त नहीं कर सकता।
उदाहरण:
modelBuilder.Entity<Customer>()
.HasMany(c => c.Orders)
.WithOne(o => o.Customer)
.HasForeignKey(o => o.CustomerId);
फ्लुएंट एपीआई कॉन्फ़िगरेशन के लिए विशेष रूप से शक्तिशाली है। मिश्रित कुंजियाँ, अनेक-से-अनेक संबंध, तथा कैस्केड नियम.
18) एंटिटी फ्रेमवर्क में डेटा एनोटेशन क्या हैं?
डेटा एनोटेशन हैं विशेषताओं स्कीमा व्यवहार को परिभाषित करने के लिए इन्हें सीधे मॉडल क्लास या प्रॉपर्टी पर लागू किया जाता है। ये फ़्लूएंट एपीआई से सरल हैं लेकिन कम लचीले हैं।
उदाहरण:
public class Product
{
[Key]
public int ProductId { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
}
एनोटेशन कुंजी, स्ट्रिंग की लंबाई, आवश्यक फ़ील्ड और संबंधों को परिभाषित करते हैं। उन्नत मामलों के लिए, डेवलपर आमतौर पर इन्हें संयोजित करते हैं। डेटा एनोटेशन और फ्लुएंट एपीआई.
19) ईएफ कोर में ट्रैक किए गए और अनट्रैक किए गए एंटिटीज़ के बीच क्या अंतर है?
| प्रकार | विवरण | उदाहरण |
|---|---|---|
| ट्रैक की गई संस्थाएँ | द्वारा निगरानी की गई DbContext परिवर्तन के लिए. |
अपडेट के लिए डिफ़ॉल्ट व्यवहार। |
| अनट्रैक्ड एंटिटीज | निगरानी नहीं की गई; इसके साथ प्राप्त किया गया .AsNoTracking(). |
केवल पढ़ने संबंधी कार्यों के लिए आदर्श। |
ट्रैक की जाने वाली इकाइयाँ अधिक मेमोरी का उपयोग करती हैं, लेकिन इससे EF को परिवर्तनों का स्वचालित रूप से पता लगाने में मदद मिलती है।
अनट्रैक्ड संस्थाएं बढ़ाती हैं प्रदर्शन उच्च-पठन, निम्न-अपडेट परिदृश्यों में।
20) आप एंटिटी फ्रेमवर्क में रॉ SQL क्वेरी कैसे निष्पादित कर सकते हैं?
एंटिटी फ्रेमवर्क कस्टम या प्रदर्शन-महत्वपूर्ण क्वेरी के लिए रॉ एसक्यूएल को निष्पादित करने की अनुमति देता है।
var result = context.Products
.FromSqlRaw("SELECT * FROM Products WHERE Price > 100")
.ToList();
गैर-क्वेरी कमांड के लिए:
context.Database.ExecuteSqlRaw("DELETE FROM Products WHERE Discontinued = 1");
इस सुविधा का सावधानीपूर्वक उपयोग करें ताकि इससे बचा जा सके। एसक्यूएल इंजेक्षन और डेटाबेस-स्वतंत्र लचीलापन बनाए रखें।
21) एंटिटी फ्रेमवर्क और एंटिटी फ्रेमवर्क कोर में क्या अंतर है?
एंटिटी फ्रेमवर्क (ईएफ) और एंटिटी फ्रेमवर्क कोर (ईएफ कोर) की वास्तुकला, क्षमताएं और क्रॉस-प्लेटफॉर्म समर्थन भिन्न-भिन्न हैं।
| Feature | एंटिटी फ्रेमवर्क 6 (ईएफ6) | इकाई फ्रेमवर्क कोर |
|---|---|---|
| मंच | केवल .NET फ्रेमवर्क | क्रॉस-प्लेटफ़ॉर्म (.NET 5/6/7) |
| Archiटेक्चर | ऑब्जेक्टकॉन्टेक्स्ट पर आधारित | हल्का और मॉड्यूलर |
| प्रदर्शन | कुछ क्वेरी में धीमा | अनुकूलित क्वेरी जनरेशन |
| LINQ समर्थन | परिपक्व लेकिन सीमित | बेहतर अनुवाद और अतुल्यकालिक |
| डेटाबेस प्रदाता | एसक्यूएल सर्वर, Oracle | एकाधिक (MySQL, PostgreSQL, SQLite, आदि) |
| विशेषताएं | परिपक्व (जैसे, लेज़ी लोडिंग) | आधुनिक (जैसे, शैडो प्रॉपर्टीज़, ग्लोबल फ़िल्टर) |
ईएफ कोर है आधुनिक, सक्रिय रूप से विकसित यह संस्करण अपनी लचीलता और प्रदर्शन के कारण नए .NET प्रोजेक्ट्स के लिए अनुशंसित विकल्प है।
22) एंटिटी फ्रेमवर्क में लेनदेन कैसे काम करते हैं?
एंटिटी फ्रेमवर्क में लेनदेन सुनिश्चित करते हैं डेटा अखंडता जब कई ऑपरेशनों को एक साथ सफल या असफल होना आवश्यक हो। डिफ़ॉल्ट रूप से, EF रैप करता है SaveChanges() किसी लेनदेन के अंदर। मैन्युअल नियंत्रण के लिए:
using (var transaction = context.Database.BeginTransaction())
{
try
{
context.Customers.Add(new Customer());
context.SaveChanges();
context.Orders.Add(new Order());
context.SaveChanges();
transaction.Commit();
}
catch
{
transaction.Rollback();
}
}
इससे एटॉमिकिटी सुनिश्चित होती है — यदि कोई भी कमांड विफल हो जाता है, तो सभी परिवर्तन वापस ले लिए जाते हैं।
EF भी इसके साथ एकीकृत होता है सिस्टम.लेनदेन वितरित लेनदेन समर्थन के लिए।
23) एंटिटी फ्रेमवर्क में TPH, TPT और TPC वंशानुक्रम रणनीतियों की व्याख्या कीजिए।
एंटिटी फ्रेमवर्क क्लास पदानुक्रमों को मॉडल करने के लिए तीन मुख्य इनहेरिटेंस मैपिंग रणनीतियों का समर्थन करता है।
| रणनीति | विवरण | उदाहरण | फायदे | नुकसान |
|---|---|---|---|---|
| टीपीएच (टेबल प्रति पदानुक्रम) | सभी क्लास एक ही टेबल साझा करते हैं; एक डिस्क्रिमिनेटर कॉलम प्रकार की पहचान करता है। | ईएफ कोर में सामान्य। | सरल, त्वरित क्वेरी। | तालिका बड़ी और विरल हो सकती है। |
| टीपीटी (टेबल प्रति प्रकार) | प्रत्येक उपवर्ग की अपनी तालिका होती है। | प्रत्येक व्युत्पन्न वर्ग अलग-अलग मैप करता है। | मानकीकृत योजना। | बड़ी पदानुक्रम प्रणालियों में शामिल होने की प्रक्रिया धीमी होती है। |
| टीपीसी (टेबल प्रति कंक्रीट क्लास) | प्रत्येक क्लास की अपनी एक टेबल होती है जिसमें डुप्लिकेट कॉलम होते हैं। | प्रत्येक इकाई को अलग-अलग मैप किया गया है। | उच्च प्रदर्शन वाली पठन क्षमता। | आधार सामग्री अतिरेक। |
अधिकांश डेवलपर्स पसंद करते हैं TPH इसकी सरलता के कारण, जब तक कि मानकीकरण या प्रदर्शन संबंधी आवश्यकताएं अन्यथा निर्देशित न करें।
24) आप एंटिटी फ्रेमवर्क में परफॉर्मेंस ट्यूनिंग को कैसे संभालते हैं?
Entity Framework के प्रदर्शन को बेहतर बनाने के लिए:
- उपयोग
AsNoTracking()केवल पढ़ने योग्य प्रश्नों के लिए। - उत्सुक भार केवल आवश्यक संबंधित संस्थाओं के साथ
.Include(). - N+1 प्रश्नों से बचें अनुमानों का उपयोग करके या
Select(). - संकलित क्वेरी का उपयोग करें बार-बार किए जाने वाले कार्यों के लिए।
- एक साथ कई इंसर्ट/अपडेट करें साथ में
AddRange()औरSaveChanges(). - ऑटोडिटेक्ट चेंजेस को अक्षम करें थोक संचालन के लिए:
context.Configuration.AutoDetectChangesEnabled = false; - कैशिंग और पेजिंग का उपयोग करें बड़े डेटा सेट के लिए.
एक सुव्यवस्थित EF कार्यान्वयन डेवलपर उत्पादकता को बनाए रखते हुए ADO.NET के प्रदर्शन के करीब पहुंच सकता है।
25) एंटिटी फ्रेमवर्क कोर में शैडो प्रॉपर्टी क्या है?
A छाया संपत्ति यह EF मॉडल में मौजूद है लेकिन एंटिटी क्लास में नहीं। इसे EF द्वारा चेंज ट्रैकर में बनाए रखा जाता है और डेटाबेस में संग्रहीत किया जाता है।
उदाहरण:
modelBuilder.Entity<Order>()
.Property<DateTime>("LastUpdated");
इससे EF को एंटिटी क्लास को संशोधित किए बिना अतिरिक्त मेटाडेटा (जैसे, टाइमस्टैम्प, ऑडिट जानकारी) संग्रहीत करने की अनुमति मिलती है।
आप निम्न माध्यमों से शैडो प्रॉपर्टीज़ तक पहुँच सकते हैं:
var value = context.Entry(order).Property("LastUpdated").CurrentValue;
शैडो प्रॉपर्टी लॉगिंग या ऑडिट परिदृश्यों के लिए आदर्श हैं।
26) ईएफ कोर में वैल्यू कन्वर्टर क्या हैं?
EF Core में मौजूद वैल्यू कन्वर्टर डेटाबेस से डेटा पढ़ते या लिखते समय प्रॉपर्टी वैल्यू को रूपांतरित करने की अनुमति देते हैं।
उदाहरण के लिए, एक एनम को स्ट्रिंग के रूप में स्टोर करने के लिए:
modelBuilder.Entity<Employee>()
.Property(e => e.Status)
.HasConversion(
v => v.ToString(),
v => (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), v));
इससे कस्टम डेटा प्रकारों के लिए लचीलापन बढ़ता है, जैसे कि enum, boolया, DateTimeOffset.
मूल्य परिवर्तकों का उपयोग इसके लिए भी किया जाता है एन्क्रिप्शन, संपीड़न या मास्किंग संवेदनशील डेटा का.
27) ग्लोबल क्वेरी फ़िल्टर क्या हैं, और वे कैसे काम करते हैं?
ग्लोबल क्वेरी फ़िल्टर किसी एंटिटी के लिए सभी क्वेरी पर शर्तों को स्वचालित रूप से लागू करने की अनुमति देते हैं।
यह विशेष रूप से उपयोगी है सॉफ्ट डिलीट or बहु किरायेदारी.
उदाहरण:
modelBuilder.Entity<Employee>()
.HasQueryFilter(e => !e.IsDeleted);
प्रत्येक क्वेरी को निष्पादित किया गया Employee स्पष्ट रूप से ओवरराइड किए जाने तक, यह स्वचालित रूप से सॉफ्ट-डिलीट किए गए रिकॉर्ड को बाहर कर देता है।
ग्लोबल फिल्टर रखरखाव क्षमता और डेटा सुरक्षा में सुधार करते हैं।
28) आप यूनिट टेस्ट का उपयोग करके एंटिटी फ्रेमवर्क कोड का परीक्षण कैसे कर सकते हैं?
वास्तविक डेटाबेस का उपयोग किए बिना EF लॉजिक का यूनिट परीक्षण करने के लिए, इसका उपयोग करें। इन-मेमोरी डेटाबेस or मजाक:
- विकल्प 1: इन-मेमोरी प्रदाता
var options = new DbContextOptionsBuilder<AppDbContext>() .UseInMemoryDatabase("TestDb") .Options; - विकल्प 2: मॉक डीबीकॉन्टेक्स्ट
दिखावटीDbSetलाइब्रेरी का उपयोग करना जैसे MOQ पृथक परीक्षण के लिए।
यूनिट टेस्ट से निम्नलिखित बातों की पुष्टि होनी चाहिए:
- क्वेरी की शुद्धता (LINQ के माध्यम से)
- डेटा संगति के बाद
SaveChanges() - रिपॉजिटरी लॉजिक
EF Core InMemory के साथ परीक्षण करने से गति सुनिश्चित होती है और SQL सर्वर पर निर्भरता से बचा जा सकता है।
29) ईएफ में रिपॉजिटरी और यूनिट ऑफ वर्क पैटर्न की व्याख्या कीजिए।
ये दो वास्तुशिल्प पैटर्न मदद करते हैं सार डेटा पहुंच और लेनदेन में निरंतरता बनाए रखें.
| पैटर्न | उद्देश्य | कार्यान्वयन उदाहरण |
|---|---|---|
| कोष | प्रत्येक इकाई के लिए CRUD संचालन को समाहित करता है। | IRepository<T> के साथ अंतरफलक Add(), GetAll(), आदि |
| कार्य इकाई | एक ही लेनदेन के भीतर कई रिपॉजिटरी को समन्वित करता है। | SaveChanges() यह कमिट बाउंड्री के रूप में कार्य करता है। |
उदाहरण:
public class UnitOfWork : IUnitOfWork
{
private readonly AppDbContext _context;
public void Commit() => _context.SaveChanges();
}
ये पैटर्न सुधार करते हैं परीक्षणीयता, कोड का पुन: उपयोग, तथा चिंताओ का विभाजन बड़े उद्यम अनुप्रयोगों में।
30) ईगर लोडिंग और प्रोजेक्शन लोडिंग में क्या अंतर है?
| पहलू | उत्सुकता से लोड हो रहा है | प्रक्षेपण लोडिंग |
|---|---|---|
| उद्देश्य | संबंधित डेटा पहले से लोड करता है | केवल विशिष्ट फ़ील्ड या गुण लोड करता है |
| विधि | .Include() |
.Select() |
| उदाहरण | context.Orders.Include(o => o.Customer) |
context.Orders.Select(o => new { o.Id, o.Customer.Name }) |
| प्रदर्शन | संपूर्ण ऑब्जेक्ट प्राप्त करता है | न्यूनतम डेटा प्राप्त करता है |
| उदाहरण | जब प्रसंस्करण के लिए संबंधित संस्थाओं की आवश्यकता होती है | जब आपको विशिष्ट हल्के डेटा की आवश्यकता हो |
प्रोजेक्शन लोडिंग एक है प्रदर्शन अनुकूलन जो केवल आवश्यक कॉलम का चयन करके मेमोरी ओवरहेड को कम करता है।
31) एंटिटी फ्रेमवर्क कोर में इंटरसेप्टर क्या हैं?
EF Core में इंटरसेप्टर डेवलपर्स को डेटाबेस संचालन को इंटरसेप्ट और संशोधित करने की अनुमति देते हैं, जैसे कि... क्वेरी निष्पादन, कमांड निर्माण और कनेक्शन खोलना.
वे EF और डेटाबेस प्रदाता के बीच मिडलवेयर घटकों के रूप में कार्य करते हैं।
उदाहरण: सभी निष्पादित SQL कमांडों का लॉग तैयार किया जा रहा है।
public class CommandInterceptor : DbCommandInterceptor
{
public override void ReaderExecuting(
DbCommand command,
CommandEventData eventData,
InterceptionResult<DbDataReader> result)
{
Console.WriteLine($"Executing SQL: {command.CommandText}");
base.ReaderExecuting(command, eventData, result);
}
}
आप इसे इसमें पंजीकृत करते हैं DbContextOptionsBuilder:
optionsBuilder.AddInterceptors(new CommandInterceptor());
लाभ:
- उन्नत लॉगिंग
- सुरक्षा (क्वेरी सत्यापन)
- ऑडिटिंग और प्रदर्शन ट्रैकिंग
32) ईएफ कोर अतुल्यकालिक संचालन को कैसे संभालता है?
एंटिटी फ्रेमवर्क कोर पूरी तरह से समर्थन करता है अतुल्यकालिक प्रोग्रामिंग जैसे तरीकों के माध्यम से SaveChangesAsync(), ToListAsync(), तथा FirstOrDefaultAsync().
अतुल्यकालिक निष्पादन सहायता करता है स्केलेबिलिटी में सुधार करें वेब अनुप्रयोगों में, इनपुट/आउटपुट संबंधी डेटाबेस संचालन की प्रतीक्षा करते समय थ्रेड्स को मुक्त करके।
उदाहरण:
var customers = await context.Customers
.Where(c => c.IsActive)
.ToListAsync();
उच्च-थ्रूपुट में एसिंक्रोनस ऑपरेशन विशेष रूप से प्रभावी होते हैं। ASP.NET कोर एपीआई और माइक्रोसेवाओं का उपयोग करके, अवरुद्ध कॉलों को कम किया जा सकता है और प्रतिक्रिया समय में सुधार किया जा सकता है।
33) एंटिटी फ्रेमवर्क कोर में कनेक्शन रेज़िलिएंसी क्या है?
कनेक्शन लचीलापन आपके एप्लिकेशन को मदद करता है अस्थायी डेटाबेस विफलताओं से स्वचालित रूप से उबरेंजैसे कि नेटवर्क में रुकावट या SQL टाइमआउट।
इसे निम्नलिखित प्रकार से कॉन्फ़िगर किया जा सकता है:
optionsBuilder.UseSqlServer(
connectionString,
options => options.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)
);
यहां, EF असफल ऑपरेशनों को विलंब के साथ अधिकतम 5 बार तक पुनः प्रयास करेगा।
यह विशेष रूप से उपयोगी है क्लाउड-होस्टेड वातावरण पसंद Azure SQL में जहां क्षणिक त्रुटियां आम हैं।
34) ईएफ कोर में स्वामित्व वाली इकाई के प्रकार क्या हैं?
स्वामित्व वाली संस्थाएं मॉडलिंग की अनुमति देती हैं मान वस्तुएँ जो पूरी तरह से किसी अन्य इकाई के जीवनचक्र पर निर्भर करते हैं।
वे अपने मालिक के साथ एक ही मेज पर बैठे होते हैं और स्वतंत्र रूप से मौजूद नहीं रह सकते।
उदाहरण:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Customer
{
public int Id { get; set; }
public Address Address { get; set; }
}
विन्यास:
modelBuilder.Entity<Customer>().OwnsOne(c => c.Address);
उदाहरण:
मॉडलिंग अवधारणाएँ जैसे पता, पैसेया, माप जिनकी अपनी कोई पहचान नहीं है।
35) एंटिटी फ्रेमवर्क कोर में सॉफ्ट डिलीट को कैसे लागू किया जा सकता है?
सॉफ्ट डिलीट का मतलब है रिकॉर्ड को भौतिक रूप से हटाने के बजाय उन्हें डिलीट के रूप में चिह्नित करना।
इन्हें एक का उपयोग करके कार्यान्वित किया जाता है बूलियन ध्वज और वैश्विक क्वेरी फ़िल्टर.
modelBuilder.Entity<Employee>()
.HasQueryFilter(e => !e.IsDeleted);
डिलीट ऑपरेशन में:
employee.IsDeleted = true; context.Update(employee); context.SaveChanges();
लाभ:
- ऐतिहासिक आंकड़ों का संरक्षण
- आसान रिकवरी
नुकसान:
- बड़े डेटाबेस टेबल
- इसके लिए सावधानीपूर्वक फ़िल्टरिंग तर्क की आवश्यकता होती है।
36) ईएफ कोर में कंपाइल्ड मॉडल क्या है और इसका उपयोग क्यों किया जाता है?
ईएफ कोर 6+ में, संकलित मॉडल यह EF मॉडल मेटाडेटा को .NET असेंबली में प्री-कंपाइल करने की अनुमति देता है, जिससे स्टार्टअप समय और रनटाइम ओवरहेड कम हो जाता है।
चरण:
- आदेश चलाएं:
dotnet ef dbcontext optimize - EF एक प्रीकंपाइल्ड मॉडल फ़ाइल तैयार करता है जिसे एप्लिकेशन रनटाइम पर तेज़ी से लोड कर सकता है।
लाभ: यह आरंभिकरण विलंबता को 30-40% तक कम करता है, विशेष रूप से कई इकाइयों वाले बड़े अनुप्रयोगों में।
उदाहरण: उच्च प्रदर्शन वाले माइक्रोसेवाएं और सर्वर रहित वातावरण।
37) आप एंटिटी फ्रेमवर्क में कैशिंग को कैसे लागू कर सकते हैं?
कैशिंग डेटाबेस में बार-बार होने वाली क्वेरी को कम करने में मदद करती है। इसके दो मुख्य स्तर हैं:
| प्रकार | विवरण | उदाहरण |
|---|---|---|
| प्रथम-स्तरीय कैश | अंतर्निर्मित, प्रति DbContext उदाहरण |
स्वचालित रूप से प्रबंधित |
| द्वितीय-स्तरीय कैश | विभिन्न संदर्भों में साझा किया गया बाह्य कैश | जैसे पुस्तकालयों का उपयोग करें EFCoreSecondLevelCacheInterceptor |
द्वितीय-स्तरीय कैशिंग का उदाहरण:
services.AddEFSecondLevelCache(options =>
{
options.UseMemoryCacheProvider().DisableLogging(false);
});
इससे प्रदर्शन में काफी सुधार होता है। पढ़ने की अधिकता वाले अनुप्रयोग अनावश्यक डेटाबेस हिट से बचकर।
38) EF Core समवर्ती टोकन और टाइमस्टैम्प को कैसे प्रबंधित करता है?
समवर्ती टोकन रोकते हैं परस्पर विरोधी अपडेट बहु-उपयोगकर्ता वातावरण में।
आप किसी प्रॉपर्टी को कॉन्करेंसी टोकन के रूप में चिह्नित कर सकते हैं। [ConcurrencyCheck] or [Timestamp] विशेषता।
उदाहरण:
public class Product
{
public int Id { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
जब कोई अपडेट होता है, तो EF इस कॉलम को शामिल करता है। WHERE खंड।
यदि मान मेल नहीं खाता है, तो DbUpdateConcurrencyException फेंका जाता है — सुनिश्चित करते हुए आशावादी समवर्ती नियंत्रण.
39) आप EF Core में ऑडिटिंग (निर्मित, संशोधित, हटाए गए ट्रैकिंग) को कैसे लागू करते हैं?
ऑडिटिंग मेटाडेटा को ट्रैक करता है जैसे कि जिसने बनाया, संशोधित किया या हटाया रिकॉर्ड्स.
आप ओवरराइड कर सकते हैं SaveChanges():
public override int SaveChanges()
{
var entries = ChangeTracker.Entries()
.Where(e => e.Entity is IAuditable &&
(e.State == EntityState.Added || e.State == EntityState.Modified));
foreach (var entry in entries)
{
var auditable = (IAuditable)entry.Entity;
auditable.LastModified = DateTime.UtcNow;
}
return base.SaveChanges();
}
इंटरफ़ेस:
public interface IAuditable
{
DateTime Created { get; set; }
DateTime LastModified { get; set; }
}
यह विधि ऑडिट लॉजिक को केंद्रीकृत करती है, जिससे यह सुनिश्चित होता है कि सुसंगत डेटा प्रबंधन.
40) एंटरप्राइज़ अनुप्रयोगों में एंटिटी फ्रेमवर्क का उपयोग करने के लिए सर्वोत्तम अभ्यास क्या हैं?
| वर्ग | बेस्ट प्रैक्टिस | लाभ |
|---|---|---|
| प्रदर्शन | उपयोग AsNoTracking() और केवल पढ़ने योग्य प्रश्नों के लिए अनुमान। |
इससे लागत कम होती है। |
| डिज़ाइन | रिपॉजिटरी और यूनिट ऑफ वर्क पैटर्न को लागू करें। | इससे रखरखाव में आसानी होती है। |
| सुरक्षा | SQL इंजेक्शन से बचने के लिए पैरामीटराइज्ड क्वेरी का उपयोग करें। | डेटा सुरक्षा। |
| अनुमापकता | कनेक्शन पूलिंग और एसिंक्रोनस विधियों का उपयोग करें। | यह उच्च भार सहन कर सकता है। |
| माइग्रेशन | वर्जन कंट्रोल के साथ स्वचालित माइग्रेशन का उपयोग करें। | स्कीमा प्रबंधन को सरल बनाता है। |
| विन्यास | कनेक्शन स्ट्रिंग और गुप्त जानकारी को बाहरी रूप से प्रकट करें। | बेहतर पर्यावरणीय अलगाव। |
| परीक्षण | यूनिट टेस्ट के लिए इन-मेमोरी प्रोवाइडर का उपयोग करें। | तेज़ परीक्षण संचालन। |
| लॉगिंग | प्रदर्शन संबंधी जानकारी के लिए EF लॉगिंग को सक्षम करें। | डिबगिंग आसान हो जाती है। |
ये प्रथाएं सुनिश्चित करती हैं मजबूत, स्केलेबल और रखरखाव योग्य एंटिटी फ्रेमवर्क पर निर्मित एप्लिकेशन।
41) एंटिटी फ्रेमवर्क में बेहतर SQL अनुवाद के लिए आप LINQ क्वेरी को कैसे अनुकूलित कर सकते हैं?
Entity Framework स्वचालित रूप से LINQ क्वेरी को SQL में परिवर्तित करता है, लेकिन अक्षम पैटर्न धीमे या अनावश्यक SQL उत्पन्न कर सकते हैं। LINQ को अनुकूलित करने से यह सुनिश्चित होता है कि ORM बेहतर प्रदर्शन वाली डेटाबेस क्वेरी उत्पन्न करे।
अनुकूलन तकनीकें:
अनुमानों का उपयोग करें:
- संपूर्ण इकाइयों के बजाय केवल आवश्यक कॉलम चुनें।
- ग्राहक-पक्षीय मूल्यांकन से बचें:
हमेशा सुनिश्चित करें कि फ़िल्टरिंग हो रही है एसक्यूएल मेंमेमोरी में मौजूद नहीं है। EF Core तब चेतावनी देता है जब मूल्यांकन क्लाइंट-साइड होता है। - उपयोग
AsNoTracking()केवल पढ़ने के लिए डेटा के लिए. - संकलित प्रश्नों का लाभ उठाएं बार-बार LINQ ऑपरेशन करने के लिए।
- अनावश्यक से बचें
.Include()कॉल — संबंधित डेटा को केवल तभी शामिल करें जब आवश्यक हो।
var customers = context.Customers
.Select(c => new { c.Id, c.Name })
.ToList();
var orders = context.Orders.AsNoTracking().ToList();
उदाहरण:
अकुशल:
context.Customers.ToList().Where(c => c.IsActive);
कुशल:
context.Customers.Where(c => c.IsActive).ToList();
42) ईएफ कोर में प्रारंभिक डेटा डालने के विभिन्न तरीके क्या हैं?
डेटा सीडिंग यह सुनिश्चित करता है कि डेटाबेस में पर्याप्त डेटा हो। डिफ़ॉल्ट या संदर्भ डेटा जब बनाया गया।
दृष्टिकोण 1: मॉडल बिल्डर का उपयोग करना
modelBuilder.Entity<Role>().HasData(
new Role { Id = 1, Name = "Admin" },
new Role { Id = 2, Name = "User" }
);
यह प्रक्रिया के दौरान डेटा को स्वचालित रूप से सम्मिलित करता है। Update-Database.
दूसरा तरीका: कस्टम सीड विधि
स्टार्टअप के समय कोड को मैन्युअल रूप से निष्पादित करें:
context.Database.Migrate();
if (!context.Users.Any())
{
context.Users.Add(new User { Name = "Admin" });
context.SaveChanges();
}
तीसरा तरीका: SQL स्क्रिप्ट
माइग्रेशन में रॉ SQL का उपयोग करें:
migrationBuilder.Sql("INSERT INTO Roles (Name) VALUES ('Admin')");
सिफारिश:
उपयोग HasData() स्थैतिक संदर्भ डेटा के लिए और गतिशील स्टार्टअप डेटा के लिए प्रोग्रामेटिक सीडिंग के लिए।
43) ईएफ कोर आंतरिक रूप से डेटाबेस प्रदाताओं का प्रबंधन कैसे करता है?
ईएफ कोर है प्रदाता-स्वतंत्रइसका मतलब है कि यह अलग-अलग माध्यमों से कई डेटाबेस इंजनों को लक्षित कर सकता है। डेटाबेस प्रदाता पैकेज.
सामान्य सेवा प्रदाता:
| Provider | NuGet पैकेज | डाटाबेस |
|---|---|---|
| SQL सर्वर | Microsoft.EntityFrameworkCore.SqlServer |
MSSQL |
| SQLite | Microsoft.EntityFrameworkCore.Sqlite |
मोबाइल/डेस्कटॉप |
| PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
| MySQL | Pomelo.EntityFrameworkCore.MySql |
MySQL |
| कॉसमॉस डीबी | Microsoft.EntityFrameworkCore.Cosmos |
NoSQL |
आंतरिक रूप से, EF Core उपयोग करता है अमूर्त परतें के लिए:
- क्वेरी अनुवाद
- SQL कमांड जनरेशन
- डेटा प्रकार मैपिंग
प्रत्येक प्रदाता EF Core के आधार अमूर्तताओं से विरासत में मिली अपनी स्वयं की कक्षाओं को लागू करता है (उदाहरण के लिए, RelationalDatabaseProvider, QuerySqlGenerator).
44) "स्प्लिट क्वेरी" क्या है, और आपको इसका उपयोग कब करना चाहिए?
स्प्लिट क्वेरी EF को प्रदर्शन करने से रोकती हैं बड़े, जटिल जोड़ एक के बजाय कई SQL क्वेरीज़ को निष्पादित करके।
उदाहरण:
var customers = context.Customers
.Include(c => c.Orders)
.AsSplitQuery()
.ToList();
यह निष्पादित होता है:
- प्रश्न 1 → ग्राहक प्राप्त करें
- प्रश्न 2 → उन ग्राहकों से संबंधित ऑर्डर प्राप्त करें
लाभ:
- बड़े कार्टेशियन गुणनफलों को रोकता है।
- बड़े संबंधित डेटासेट के साथ प्रदर्शन में सुधार करता है।
दोष यह है:
डेटाबेस तक कई बार आना-जाना।
उपयोग स्प्लिट क्वेरीज़ बड़ी मात्रा में संबंधित डेटा को शीघ्रता से लोड करते समय मेमोरी संबंधी समस्याएं उत्पन्न हो सकती हैं।
45) आप EF द्वारा उत्पन्न SQL कमांड की प्रभावी ढंग से निगरानी कैसे कर सकते हैं?
SQL की निगरानी करने से धीमी क्वेरी को डीबग करने और ORM के व्यवहार को अनुकूलित करने में मदद मिलती है।
SQL लॉग करने के तरीके:
- कंसोल लॉगिंग
- ILoggerFactory एकीकरण
- इंटरसेप्टर को लागू करें
DbCommandInterceptorआदेशों और समय को रिकॉर्ड करने के लिए। - प्रोफाइलिंग उपकरण इस प्रकार के उपकरणों का उपयोग करें:
- मिनीप्रोफाइलर
- एसक्यूएल सर्वर प्रोफाइलर
- ईएफसीोर पॉवरटूल्स
optionsBuilder
.UseSqlServer(conn)
.LogTo(Console.WriteLine, LogLevel.Information);
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); optionsBuilder.UseLoggerFactory(loggerFactory);
लॉगिंग होनी चाहिए चुनिंदा रूप से सक्षम प्रदर्शन संबंधी समस्याओं से बचने के लिए उत्पादन में इसका उपयोग किया जाता है।
46) ChangeTracker.DetectChanges() और AutoDetectChangesEnabled में क्या अंतर है?
| Feature | DetectChanges() |
AutoDetectChangesEnabled |
|---|---|---|
| प्रकार | विधि | संपत्ति |
| उद्देश्य | EF को ट्रैक की गई संस्थाओं को स्कैन करने और परिवर्तनों का पता लगाने के लिए बाध्य करता है | स्वचालित परिवर्तन पहचान को सक्षम/अक्षम करता है |
| चूक | हाथ-संबंधी | यह सच है |
| प्रयोग | प्रदर्शन अनुकूलन के लिए स्पष्ट रूप से अनुरोध करें | बल्क अपडेट के लिए अक्षम करें |
उदाहरण:
context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (var item in list)
{
context.Add(item);
}
context.SaveChanges();
लूप में स्वचालित पहचान को अक्षम करने से प्रदर्शन में अधिकतम सुधार होता है। 40% तक थोक संचालन में।
47) आप EF Core के साथ टेम्परल टेबल का उपयोग कैसे करते हैं?
टेम्पोरल टेबल (जो SQL सर्वर 2016 में पेश की गई थीं) आपको इसकी अनुमति देती हैं: ऐतिहासिक डेटा को ट्रैक करें स्वचालित रूप से.
चरण:
- प्रवासन में अस्थायी सहायता सक्षम करें:
- ऐतिहासिक डेटा की खोज करें:
builder.Entity<Employee>()
.ToTable("Employees", b => b.IsTemporal());
var history = context.Employees
.TemporalAsOf(DateTime.UtcNow.AddDays(-7))
.ToList();
लाभ:
- अंतर्निर्मित डेटा इतिहास ट्रैकिंग
- लेखा परीक्षा और अनुपालन
- किसी मैनुअल ट्रिगर की आवश्यकता नहीं है
EF Core 6+ पूर्ण अस्थायी क्वेरी का समर्थन करता है।
48) ईएफ कोर संकलित क्वेरी और पूर्व-जनित मॉडल को एक साथ कैसे सपोर्ट करता है?
संकलित क्वेरी और संकलित मॉडल दो अलग-अलग प्रकार के होते हैं। प्रदर्शन सुविधाएँ जो एक दूसरे के पूरक हैं।
| Feature | उद्देश्य |
|---|---|
| संकलित क्वेरीज़ | कैश क्वेरी अनुवाद परिणाम |
| संकलित मॉडल | मॉडल मेटाडेटा को पहले से संकलित करें |
संकलित क्वेरी का उदाहरण:
static readonly Func<AppDbContext, int, Customer> _getCustomerById =
EF.CompileQuery((AppDbContext ctx, int id) =>
ctx.Customers.FirstOrDefault(c => c.Id == id));
उपयोग:
var customer = _getCustomerById(context, 5);
साथ में: संकलित मॉडल कम करते हैं शुरूआत लागतजबकि संकलित क्वेरी कम हो जाती हैं रनटाइम क्वेरी ओवरहेड — के लिए आदर्श उच्च-आवृत्ति प्रश्न.
49) माइक्रोसर्विस आर्किटेक्चर में ईएफ का उपयोग करते समय सामान्य कमियां क्या हैं?
साधारण गलती:
- सेवाओं में साझा डेटाबेस संदर्भ
→ माइक्रोसर्विस आइसोलेशन का उल्लंघन करता है।
→ प्रत्येक माइक्रोसेवा का अपना डेटाबेस संदर्भ और स्कीमा होना चाहिए। - बातचीतपूर्ण संचार (N+1 प्रश्न)
→ प्रति एपीआई कॉल ईएफ क्वेरी की संख्या कम करें। - अत्यधिक तीव्र लोडिंग
→ डीटीओ के माध्यम से केवल आवश्यक सामग्री ही लोड करें। - केंद्रीकृत प्रवासन
→ प्रत्येक सेवा को अपने स्वयं के माइग्रेशन को स्वतंत्र रूप से प्रबंधित करना चाहिए। - लेन-देन की सीमाओं का अभाव
→ यदि विभिन्न सेवाओं के बीच एकरूपता आवश्यक हो तो वितरित लेनदेन (आउटबॉक्स पैटर्न) का उपयोग करें। - SQL प्रदाता के साथ टाइट कपलिंग
→ डेटाबेस के चयन में लचीलापन बनाए रखने के लिए रिपॉजिटरी एब्स्ट्रैक्शन का उपयोग करें।
50) ASP.NET Core में डिपेंडेंसी इंजेक्शन DbContext के साथ कैसे एकीकृत होता है?
एंटिटी फ्रेमवर्क सहजता से एकीकृत हो जाता है ASP.NET Core का अंतर्निर्मित डिपेंडेंसी इंजेक्शन (DI) प्रणाली।
सेटअप:
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Default")));
फिर इसे कंट्रोलर या सेवाओं में इंजेक्ट करें:
public class CustomerService
{
private readonly AppDbContext _context;
public CustomerService(AppDbContext context)
{
_context = context;
}
}
जीवनकाल:
| जीवनकाल | विवरण | के लिए सिफारिश की |
|---|---|---|
| दायरे वाला | प्रति HTTP अनुरोध एक संदर्भ | चूक |
| क्षणिक | हर बार नया उदाहरण | पृष्ठभूमि नौकरियाँ |
| एकाकी वस्तु | विश्व स्तर पर साझा किया गया | इससे बचें (यह थ्रेड-सेफ नहीं है) |
डीआई का उपयोग यह सुनिश्चित करता है परीक्षण योग्यता, जीवनचक्र प्रबंधन, तथा संसाधन क्षमता वेब और बैकग्राउंड प्रक्रियाओं में।
🔍 वास्तविक दुनिया के परिदृश्यों और रणनीतिक प्रतिक्रियाओं के साथ शीर्ष एंटिटी फ्रेमवर्क साक्षात्कार प्रश्न
1) एंटिटी फ्रेमवर्क क्या है, और इसका उपयोग एंटरप्राइज एप्लीकेशन में क्यों किया जाता है?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता एंटिटी फ्रेमवर्क की आपकी मूलभूत समझ और वास्तविक दुनिया के अनुप्रयोगों में इसके महत्व का आकलन करना चाहता है।
उदाहरण उत्तर: एंटिटी फ्रेमवर्क .NET के लिए एक ऑब्जेक्ट-रिलेशनल मैपिंग फ्रेमवर्क है जो डेवलपर्स को सीधे SQL के बजाय .NET ऑब्जेक्ट्स का उपयोग करके डेटाबेस के साथ काम करने की सुविधा देता है। इसका उपयोग एंटरप्राइज़ अनुप्रयोगों में उत्पादकता बढ़ाने, अनावश्यक डेटा एक्सेस कोड को कम करने और कार्यों के बीच स्पष्ट विभाजन बनाए रखने के लिए किया जाता है।
2) क्या आप कोड फर्स्ट, डेटाबेस फर्स्ट और मॉडल फर्स्ट दृष्टिकोणों के बीच अंतर समझा सकते हैं?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता विभिन्न विकास कार्यप्रवाहों के बारे में आपके ज्ञान और प्रत्येक कार्यप्रवाह का उपयोग कब करना है, इसका मूल्यांकन करना चाहता है।
उदाहरण उत्तर: कोड फर्स्ट विधि डोमेन क्लास से शुरू होती है और कोड से डेटाबेस बनाती है। डेटाबेस फर्स्ट विधि मौजूदा डेटाबेस से शुरू होती है और एंटिटी क्लास बनाती है। मॉडल फर्स्ट विधि विज़ुअल डिज़ाइनर का उपयोग करके मॉडल को परिभाषित करती है और फिर कोड और डेटाबेस दोनों बनाती है। प्रत्येक विधि का चयन परियोजना की आवश्यकताओं और मौजूदा बुनियादी ढांचे के आधार पर किया जाता है।
3) एंटिटी फ्रेमवर्क तालिकाओं के बीच संबंधों को कैसे संभालता है?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता डेटा मॉडलिंग और रिलेशनल मैपिंग के बारे में आपकी समझ की जांच कर रहा है।
उदाहरण उत्तर: एंटिटी फ्रेमवर्क नेविगेशन प्रॉपर्टी और फॉरेन कीज़ का उपयोग करके संबंधों को संभालता है। यह वन-टू-वन, वन-टू-मेनी और मेनी-टू-मेनी संबंधों का समर्थन करता है, जिससे डेवलपर्स जॉइन के बजाय ऑब्जेक्ट रेफरेंस का उपयोग करके संबंधित डेटा को एक्सेस कर सकते हैं।
4) एक ऐसी स्थिति का वर्णन करें जहां आपने एंटिटी फ्रेमवर्क का उपयोग करके डेटाबेस के प्रदर्शन में सुधार किया हो।
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता अनुकूलन कौशल को प्रदर्शित करने वाला एक व्यावहारिक उदाहरण सुनना चाहता है।
उदाहरण उत्तर: अपनी पिछली भूमिका में, मैंने अनावश्यक ईगर लोडिंग को कम करके और सेलेक्ट स्टेटमेंट के साथ प्रोजेक्शन क्वेरी लागू करके प्रदर्शन में सुधार किया। इससे डेटाबेस से प्राप्त डेटा की मात्रा कम हो गई और क्वेरी निष्पादन समय में उल्लेखनीय कमी आई।
5) आप एंटिटी फ्रेमवर्क में माइग्रेशन को कैसे मैनेज करते हैं?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता स्कीमा परिवर्तनों और संस्करण नियंत्रण के संबंध में आपके अनुभव का आकलन कर रहा है।
उदाहरण उत्तर: माइग्रेशन को अंतर्निहित माइग्रेशन टूल का उपयोग करके प्रबंधित किया जाता है जो समय के साथ मॉडल परिवर्तनों को ट्रैक करते हैं। पिछली नौकरी में, मैं डेटाबेस की अखंडता सुनिश्चित करने के लिए विभिन्न वातावरणों में माइग्रेशन स्क्रिप्ट को लागू करने से पहले नियमित रूप से उन्हें तैयार और समीक्षा करता था।
6) लेज़ी लोडिंग क्या है, और आप इसका उपयोग कब करने से बचेंगे?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता डेटा लोडिंग रणनीतियों और प्रदर्शन संबंधी समझौतों के बारे में आपकी समझ का परीक्षण करना चाहता है।
उदाहरण उत्तर: लेज़ी लोडिंग एक्सेस किए जाने पर संबंधित डेटा को स्वचालित रूप से लोड कर देती है। मैं इसे परफॉर्मेंस-क्रिटिकल सिनेरियो या API में उपयोग करने से बचना चाहूंगा क्योंकि इससे कई अनपेक्षित डेटाबेस कॉल हो सकते हैं, जिससे N+1 क्वेरी समस्या उत्पन्न हो सकती है।
7) आप एंटिटी फ्रेमवर्क में लेन-देन को कैसे संभालते हैं?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता डेटा की स्थिरता और त्रुटि प्रबंधन के बारे में आपके ज्ञान का मूल्यांकन कर रहा है।
उदाहरण उत्तर: एंटिटी फ्रेमवर्क DbContext और TransactionScope के माध्यम से लेनदेन का समर्थन करता है। अपनी पिछली नौकरी में, मैंने स्पष्ट लेनदेन का उपयोग यह सुनिश्चित करने के लिए किया था कि कई संबंधित डेटाबेस ऑपरेशन या तो एक साथ सफलतापूर्वक पूरे हों या विफलता की स्थिति में उन्हें रोलबैक कर दिया जाए।
8) एंटिटी फ्रेमवर्क के साथ डिपेंडेंसी इंजेक्शन का उपयोग कैसे किया जाता है, समझाइए।
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता यह देखना चाहता है कि आप आधुनिक एप्लिकेशन आर्किटेक्चर को कितनी अच्छी तरह समझते हैं।
उदाहरण उत्तर: डिपेंडेंसी इंजेक्शन का उपयोग सेवाओं या नियंत्रकों में DbContext को इंजेक्ट करने के लिए किया जाता है। इससे परीक्षण क्षमता और रखरखाव क्षमता में सुधार होता है क्योंकि व्यावसायिक तर्क को बदले बिना संदर्भ को मॉक या प्रतिस्थापित किया जा सकता है।
9) एंटिटी फ्रेमवर्क के साथ आपको जिस चुनौतीपूर्ण बग का सामना करना पड़ा, उसका वर्णन करें और बताएं कि आपने उसे कैसे हल किया।
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता समस्या-समाधान क्षमता और डिबगिंग कौशल की तलाश में है।
उदाहरण उत्तर: अपनी पिछली भूमिका में, मुझे अलग-अलग एंटिटी को अपडेट करते समय ट्रैकिंग संबंधी समस्याओं का सामना करना पड़ा। मैंने एंटिटी की स्थिति को स्पष्ट रूप से सेट करके और यह सुनिश्चित करके कि संदर्भ द्वारा प्रत्येक एंटिटी के केवल एक ही इंस्टेंस को ट्रैक किया जाए, इस समस्या को हल किया।
10) आप यह कैसे तय करते हैं कि एंटिटी फ्रेमवर्क सही टूल नहीं है?
उम्मीदवार से अपेक्षित: साक्षात्कारकर्ता आपके निर्णय लेने की क्षमता और उपयुक्त तकनीकों को चुनने की आपकी योग्यता को समझना चाहता है।
उदाहरण उत्तर: जब अनुप्रयोगों को अत्यंत उच्च-प्रदर्शन डेटा एक्सेस या जटिल स्टोर्ड प्रोसीजर लॉजिक की आवश्यकता होती है, तो मैं वैकल्पिक तरीकों पर विचार करता हूँ। ऐसे मामलों में, माइक्रो-ओआरएम या रॉ एडीओ.नेट का उपयोग अधिक नियंत्रण और दक्षता प्रदान कर सकता है।
