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

मैं एंटिटी फ्रेमवर्क 5 में संबंधों के माध्यम से कई लोगों को कैसे व्यक्त करूं?

आपके पास एक डेटा प्रकार है जिसे आप अलग-अलग नामों से बुला रहे हैं। यह थोड़ा भ्रमित करने वाला है। हालांकि इसे पहले कोड के साथ काम करने के लिए आपको अपने कस्टम डीबीकॉन्टेक्स्ट क्लास में निम्नलिखित धाराप्रवाह कॉन्फ़िगरेशन की आवश्यकता है:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<user>().
      HasMany(c => c.Buddies).
      WithMany().
      Map(
       m =>
       {
          m.MapLeftKey("user_id");
          m.MapRightKey("buddy_id");
          m.ToTable("buddies");
       });
}

यह मानते हुए कि आपका उपयोगकर्ता वर्ग इस तरह दिखता है:

[Table("user")]
public class user
{
    public int id { get; set; }
    public string name { get; set; }
    public string email { get; set; }
    public virtual List<user> Buddies { get; set; }
}

यदि आप उपरोक्त विधि का उपयोग करते हैं तो आपके पास मौजूद प्रत्येक उपयोगकर्ता ऑब्जेक्ट में नेविगेशन प्रॉपर्टी . होगी उस पर दोस्त कहा जाता है। उपयोगकर्ताओं के लिए क्वेरी करते समय आप मित्र उपयोगकर्ताओं को उत्सुक करना चाहते हैं , करो:

context.users.Include("Buddies")

इसके अलावा, कई पाठकों के साथ अपनी समस्या का समाधान करने के लिए। ऐसा इसलिए है क्योंकि आपने क्वेरी की गणना नहीं की है (db.users) आपके पहले लूप से। इसे संबोधित करने के लिए आप इस तरह की क्वेरी की गणना कर सकते हैं:

var users = context.users.Include("Buddies").ToList();
foreach(var user in users)....

और यदि आप ऊपर दिए गए कॉन्फ़िगरेशन का उपयोग करते हैं, तो आपको आईडी का मिलान करने का प्रयास करने की आवश्यकता नहीं है, आप बस दोस्तों नेविगेशन प्रॉपर्टी का उपयोग करके उपयोगकर्ता से मित्रों की सूची (शून्य फ़ील्ड यदि नया है) प्राप्त करते हैं। (वर्चुअल, आलसी लोडेड), करें:

user.Buddies

जैसा कि आप देख सकते हैं कि आपको वास्तव में 'मॉडल.बडी' की आवश्यकता नहीं है (क्योंकि इसमें केवल एक आईडी मैपिंग है) इकाई ढांचा लिंकिंग का ख्याल रखेगा। हालाँकि यदि आप हमेशा अपनी उपयोगकर्ता क्वेरी में दोस्तों को शामिल नहीं कर रहे हैं तो आप तालिका चाहते हैं। LINQ के साथ निम्नलिखित तरीके से पूछताछ की जाएगी:

var userBuddies = db.buddies.Where(buddy=>buddy.user_id == user.id).ToList();
//An enumerated list of user buddies 
//do stuff



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Concat में Group_Concat NULL मानों के साथ काम नहीं कर रहा है

  2. ऑफ़लाइन काम करने वाले php mysql एप्लिकेशन का निर्माण कैसे करें

  3. सीमित संख्या में पंक्तियाँ लाने के लिए MySQL GROUP_CONCAT को कैसे हैक करें?

  4. स्तंभों को पंक्तियों में स्थानांतरित करें

  5. प्रत्येक अपडेट पर MySQL CURRENT_TIMESTAMP फ़ील्ड अपडेट