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

एंटिटी फ्रेमवर्क कोर में इनहेरिटेंस के साथ कैसे काम करें

Microsoft का Entity Framework Core अपने पूर्ववर्ती, Entity Framework का एक क्रॉस-प्लेटफ़ॉर्म, हल्का और लचीला संस्करण है। EF Core एक ऑब्जेक्ट-रिलेशनल मैपर (ORM) टूल है जो विविध डेटा स्रोतों से डेटा को संग्रहीत करने और पुनर्प्राप्त करने का एक मानकीकृत तरीका प्रदान करता है।

एक संबंधपरक मॉडल के बजाय एक वैचारिक के खिलाफ प्रोग्रामिंग करके। नतीजतन, एप्लिकेशन में डेटा का प्रतिनिधित्व कैसे किया जाता है और इसे डेटाबेस में कैसे संग्रहीत किया जाता है, के बीच कोई प्रतिबाधा बेमेल नहीं है।

वंशानुक्रम ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग की एक विशेषता है जो आपको बेस क्लास से उपवर्ग बनाने में सक्षम बनाता है जिससे बेस क्लास की सुविधाओं का विस्तार होता है। एंटिटी फ्रेमवर्क कोर विरासत के लिए उत्कृष्ट समर्थन प्रदान करता है। यह लेख इस बारे में बात करता है कि हम एंटिटी फ्रेमवर्क कोर में इनहेरिटेंस को कैसे लागू कर सकते हैं। हम डेटाबेस से बात करने के लिए EntityDeveloper का लाभ उठाएंगे।

पूर्वापेक्षाएँ

इस आलेख में प्रदर्शित कोड उदाहरणों के साथ काम करने में सक्षम होने के लिए, आपके सिस्टम में निम्नलिखित स्थापित होना चाहिए:

  • विजुअल स्टूडियो 2019 सामुदायिक संस्करण (डाउनलोड)
  • पोस्टग्रेएसक्यूएल के लिए डॉटकनेक्ट (डाउनलोड करें)
  • इकाई डेवलपर

आप यहां से इकाई डेवलपर (परीक्षण संस्करण) की एक प्रति डाउनलोड कर सकते हैं:https://www.devart.com/entitydeveloper/download.html।

डेटाबेस बनाएं

अब जब Visual Studio 2019 में ASP.NET Core Web API प्रोजेक्ट बनाया गया है; अगला कदम डेटाबेस बनाना है। ध्यान दें कि सादगी के लिए हम इस उदाहरण में सरल डिज़ाइन वाले कुछ दो तालिकाओं वाले डेटाबेस का उपयोग करेंगे। डेमो नाम का एक डेटाबेस बनाएं और उसमें तीन टेबल (पर्सन, यूजर और मैनेजर) बनाएं। इन तालिकाओं के क्षेत्रों को इस आलेख में बाद में दिखाए गए मॉडल वर्गों के गुणों के साथ मैप करना चाहिए।

नया ASP.NET कोर वेब API प्रोजेक्ट बनाएं

यह मानते हुए कि एंटिटी डेवलपर के साथ काम करने में सक्षम होने के लिए आपके कंप्यूटर पर आवश्यक सॉफ़्टवेयर स्थापित किया गया है, एक नया ASP.NET कोर वेब API प्रोजेक्ट बनाने के लिए नीचे दिए गए चरणों का पालन करें।

1. सबसे पहले, विजुअल स्टूडियो 2019 आईडीई खोलें।
2. इसके बाद, नया प्रोजेक्ट बनाएं click क्लिक करें एक बार आईडीई लोड हो जाने के बाद।
3. नया प्रोजेक्ट बनाएं Click क्लिक करें .
4. इसके बाद, ASP.NET कोर वेब एप्लिकेशन चुनें .
5. अगला Click क्लिक करें .
6. प्रोजेक्ट का नाम और स्थान निर्दिष्ट करें - जहां इसे आपके सिस्टम में संग्रहीत किया जाना चाहिए।
7. वैकल्पिक रूप से, समाधान और प्रोजेक्ट को एक ही निर्देशिका में रखें . क्लिक करें चेकबॉक्स।
8. इसके बाद, बनाएं . क्लिक करें .
9. एक नया ASP.NET कोर वेब एप्लिकेशन बनाएं . में आगे दिखाई देने वाली डायलॉग विंडो में, API select चुनें परियोजना टेम्पलेट के रूप में।
10. संस्करण के रूप में ASP.NET Core 3.1 या बाद के संस्करण का चयन करें।
11. आपको HTTPS के लिए कॉन्फ़िगर करें . को अक्षम कर देना चाहिए और डॉकर समर्थन सक्षम करें संबंधित चेकबॉक्स को अक्षम करके विकल्प।
12. चूंकि हम इस उदाहरण में प्रमाणीकरण का उपयोग नहीं करेंगे, इसलिए प्रमाणीकरण को कोई प्रमाणीकरण नहीं के रूप में निर्दिष्ट करें .
13. अंत में, बनाएं . पर क्लिक करें प्रक्रिया समाप्त करने के लिए बटन।

एक निकाय डेटा मॉडल बनाएं

अगली चीज़ जो आपको करनी चाहिए वह है एक निकाय डेटा मॉडल बनाना। जब आप Entity Developer में एक मॉडल बनाते हैं, तो चुनने के लिए दो विकल्प होते हैं:डेटाबेस फर्स्ट (यह डिफ़ॉल्ट रूप से चुना जाता है) और मॉडल फर्स्ट। इस उदाहरण में, हम डेटाबेस प्रथम दृष्टिकोण का लाभ उठाएंगे। डेटाबेस से जेनरेट करें . का चयन करना याद रखें डेटाबेस से अपना मॉडल जेनरेट करने का विकल्प और उन डेटाबेस ऑब्जेक्ट्स का चयन करें जिन्हें आप अपने इकाई डेटा मॉडल का हिस्सा बनना चाहते हैं।

डेटाबेस-प्रथम दृष्टिकोण का उपयोग करके इकाई डेवलपर में निकाय डेटा मॉडल बनाने के लिए नीचे दिए गए चरणों का पालन करें।

1. समाधान एक्सप्लोरर . में अपना प्रोजेक्ट चुनें खिड़की।
2. राइट-क्लिक करें और जोड़ें . चुनें>नया आइटम .
3. डेवर्ट EF कोर मॉडल Select चुनें जैसा कि नीचे दिखाया गया है टेम्पलेट के रूप में।

4। अपने निकाय डेटा मॉडल के लिए एक नाम निर्दिष्ट करें और जोड़ें . क्लिक करें .
5. कनेक्शन गुण निर्दिष्ट करें और कनेक्शन का परीक्षण करें।
6. अगला Click क्लिक करें जारी रखने के लिए।
7. डिफ़ॉल्ट रूप से, "डेटाबेस से उत्पन्न" विकल्प का चयन किया जाएगा। चूंकि हम चाहते हैं कि मॉडल डेटाबेस से बनाया जाए, अगला . क्लिक करें जारी रखने के लिए।
8. सभी विकल्पों को अचयनित करें और फिर केवल उन डेटाबेस ऑब्जेक्ट्स को निर्दिष्ट करें जिन्हें आप मॉडल का हिस्सा बनना चाहते हैं। यहां आपको उत्पादों और श्रेणियों की तालिकाओं का चयन करना चाहिए।
9. सेटअप . में नामकरण नियम स्क्रीन, आप वैकल्पिक रूप से अपनी संस्थाओं के लिए नामकरण नियम निर्दिष्ट कर सकते हैं।
10. अगली स्क्रीन में आप वैकल्पिक रूप से मॉडल गुण निर्दिष्ट कर सकते हैं।
11. अगली स्क्रीन में आप वैकल्पिक रूप से मॉडल आरेख सामग्री चुन सकते हैं।
12. अगली स्क्रीन में आप वैकल्पिक रूप से कोड जनरेशन टेम्प्लेट निर्दिष्ट कर सकते हैं।
13. अपनी पसंद का कोड जनरेशन टेम्प्लेट निर्दिष्ट करें।
14. अंत में, समाप्त करें . क्लिक करें प्रक्रिया को पूरा करने के लिए।

एंटिटी डेवलपर का उपयोग करके आपका ADO.NET इकाई डेटा मॉडल डेटा संदर्भ और मॉडल वर्गों के साथ बनाया जाएगा।

इकाई फ्रेमवर्क कोर में विरासत

एंटिटी फ्रेमवर्क कोर (ईएफ कोर) आपको एक डेटाबेस के लिए एक .NET वर्ग पदानुक्रम को मैप करने की अनुमति देता है। इसलिए, आप अपनी .NET संस्थाओं को आधार और व्युत्पन्न प्रकारों के रूप में प्रस्तुत कर सकते हैं, और EF Core आपके लिए डेटाबेस स्कीमा उत्पन्न कर सकता है। हालांकि, चूंकि ईएफ कोर स्वचालित रूप से आधार या व्युत्पन्न कक्षाओं की तलाश नहीं करता है, इसलिए यदि आप इसे मैप करना चाहते हैं तो आपको अपने मॉडल पर स्पष्ट रूप से एक सीएलआर प्रकार घोषित करना होगा। यह ध्यान दिया जाना चाहिए कि केवल आधार प्रकार निर्दिष्ट करना पर्याप्त नहीं होगा, अर्थात, यह स्वचालित रूप से EF Core को सभी उप-प्रकारों को शामिल करने के लिए बाध्य नहीं करेगा।

निम्न कोड सूची दर्शाती है कि आप किसी वर्ग के साथ-साथ उसके उपवर्ग के लिए एक कस्टम डेटा संदर्भ कैसे बना सकते हैं।

public class DemoDbContext : DbContext {
    public DbSet<Person> Person { get; set; }
    public DbSet<Author> Authors { get; set; }
}

public class Person {
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class Author : Person {
    public string SubjectArea { get; set; }
}

तालिका प्रति पदानुक्रम (TPH)

तालिका प्रति पदानुक्रम (टीपीएच) प्रकार की विरासत में (यह ईएफ कोर में डिफ़ॉल्ट विरासत प्रकार है), आपके पास सभी वर्गों का प्रतिनिधित्व करने के लिए पूरे पदानुक्रम के लिए केवल एक तालिका होगी। विभिन्न प्रकारों के बीच अंतर करने के लिए, "विभेदक" कॉलम का उपयोग किया जाता है। डिफ़ॉल्ट रूप से, तालिका का नाम बेस क्लास या इसके साथ जुड़े डीबीसेट फ़ील्ड के नाम पर रखा जाता है। तालिका का नाम डिफ़ॉल्ट रूप से बेस क्लास या उसके संबंधित DbSet विशेषता का नाम होगा।

निम्न कोड स्निपेट दिखाता है कि तालिका प्रति पदानुक्रम का प्रतिनिधित्व कैसे किया जा सकता है:

public abstract class Person {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

    public class User : Person {
        public string UserName { get; set; }
        public string Password { get; set; }
    }

    public class Manager : Person {
        public string Department { get; set; }
    }

तालिका प्रति प्रकार (टीपीटी)

तालिका प्रति प्रकार (टीपीटी) दृष्टिकोण वंशानुक्रम संबंधों को विदेशी कुंजी के रूप में दर्शाया गया है। इस दृष्टिकोण में, एक अलग तालिका विरासत श्रृंखला के प्रत्येक प्रकार (सार प्रकारों सहित) का प्रतिनिधित्व करती है। विदेशी कुंजियों का उपयोग उन तालिकाओं को जोड़ने के लिए किया जाता है जो उनके आधार प्रकार के साथ व्युत्पन्न प्रकार का प्रतिनिधित्व करती हैं। इस रणनीति में, EF Core डेटाबेस में एक आधार तालिका और प्रत्येक व्युत्पन्न प्रकार के लिए विशिष्ट कई तालिकाएँ बनाता है।

निम्नलिखित कोड सूची से पता चलता है कि तालिका प्रति प्रकार (टीपीटी) दृष्टिकोण को कैसे लागू किया जा सकता है:

public abstract class Person {
    public int Id { get; set; }
    public string FullName { get; set; }
}

[Table("Users")]
public class User : Person {
     public string UserName { get; set; }
     public string Password { get; set; }
}

[Table("Managers")]
public class Manager : Person {
     public string Department { get; set; }
}

तालिका प्रति कंक्रीट प्रकार (टीपीसी)

तालिका प्रति कंक्रीट प्रकार (टीपीसी) दृष्टिकोण में, विरासत श्रृंखला में प्रत्येक ठोस प्रकार डेटाबेस में विशिष्ट तालिका द्वारा दर्शाया जाता है, लेकिन अमूर्त वर्ग नहीं। किसी भी सार आधार प्रकार के गुण प्रत्येक ठोस प्रकार की तालिका में फ़ील्ड के रूप में बनाए जाते हैं।

क्लास का डिजाइन टीपीएच जैसा ही होगा। यहां बताया गया है कि आप प्रत्येक उपवर्ग के लिए तालिका कैसे निर्दिष्ट कर सकते हैं:

public class MyDbContext : DbContext {
    public DbSet<Person> Person { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Entity<User>().Map(m => {
            m.MapInheritedProperties();
            m.ToTable("Users");
        });

        modelBuilder.Entity<Author>().Map(m => {
            m.MapInheritedProperties();
            m.ToTable("Managers");
        });
    }
}

सारांश

एंटिटी फ्रेमवर्क कोर को .NET मानक 2.1 का समर्थन करने वाले किसी भी प्लेटफॉर्म पर निष्पादित किया जा सकता है। इसमें .NET Core 3.1 और साथ ही.NET 5 शामिल हैं। हालांकि, यह .NET मानक 2.0 पर निष्पादित नहीं होगा, जिसका अर्थ है कि EF Core 5.0 से शुरू होकर, आप .NET Framework के साथ EF Core का लाभ उठाने में असमर्थ होंगे। पढ़कर खुशी हुई!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्क्रैच से डेटाबेस मॉडल कैसे बनाएं

  2. आंकड़े अपडेट के लिए संभावित सुधार :MAXDOP

  3. SQL SUM फ़ंक्शन का उपयोग कैसे करें

  4. Qlik Sense में Java डेटा के साथ कार्य करना

  5. विंडो फ़ंक्शंस और दृश्यों के साथ समस्या