2011-03-20 12 views
5

मेरे पास एक मौजूदा डेटाबेस है। फिलहाल मैं अपनी नई इकाई वस्तुओं को उस डीबी में इकाई फ्रेमवर्क कोड के साथ मैप करने की कोशिश कर रहा हूं। नीचे उपयोगकर्ता वर्ग है जिसमें मित्र संग्रह है। जैसा कि आप देख सकते हैं कि यह एक ही तालिका में कई से अधिक रिश्तों है। मैं "user_friend" तालिका में इस संबंध को कैसे मैप कर सकता हूं जिसमें कॉलम "user_id" और "friend_id" हैं।ईएफ सीएफ मैन्युअल रूप से कई मैपिंग को कॉन्फ़िगर करें

public class User 
{ 
    private ICollection<User> _friends = new List<User>(); 
    public ICollection<User> Friends { get{return _firends;} } 
} 

moduleBuilder.Entity<User>().HasMany????.ToTable("user_friend"); 

उत्तर

6

आप इस के लिए धाराप्रवाह एपीआई के ड्रॉप डाउन की जरूरत है:

public class User 
{ 
    public int UserId { get; set; } 
    public ICollection<User> Friends { get; set; } 
} 

public class Context : DbContext 
{ 
    public DbSet<User> Users { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>().HasMany(u => u.Friends).WithMany().Map(c => 
     { 
      c.MapLeftKey(u=>u.UserID, "user_id"); 
      c.MapRightKey(f=>f.FriendID, "friend_id"); 
      c.ToTable("user_friend"); 
     }); 
    } 
} 
+0

धन्यवाद। यह ईएफ आरसी स्थापित करने के बाद काम किया। एक और प्रश्न। क्या किसी मित्र को मित्र संग्रह को मानचित्र बनाना संभव है। मैं अपने संग्रह को IENumerable या आईसीओलेक्शन {{वापसी _friends.AsReadOnly();}} के रूप में बेनकाब करना चाहता हूं लेकिन यह संभव नहीं है। – mynkow

+0

कोई समस्या नहीं है। आपके प्रश्न के बारे में, ईएफ कोड पहले वर्तमान में किसी क्षेत्र में मानचित्रण का समर्थन नहीं करता है, इसे एक संपत्ति होना है। यदि आप अपनी संपत्ति को केवल पढ़ने के लिए बनाते हैं तो कोड फर्स्ट बस इसे अनदेखा कर देगा। बेशक आप बैकिंग फ़ील्ड को परिभाषित करके एक गैर-स्वचालित संपत्ति प्राप्त कर सकते हैं लेकिन कोड फर्स्ट हमेशा संपत्ति के साथ काम करेगा, न कि क्षेत्र में। –

+0

10x, एक अच्छा दिन है :) – mynkow

संबंधित मुद्दे