8

एंटीटी फ्रेमवर्क 7 कोड में वन-टू-वन या ज़ीरोऑर्न-टू-वन रिश्तों को कॉन्फ़िगर कैसे करें डेटा एनोटेशन या फ्लुएंट एपी का उपयोग करके पहले?एंटीटी फ्रेमवर्क 7 कोड में पहला-से-एक रिश्ते पहले

+1

इसे पढ़ें [लेख] (http://www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx) –

उत्तर

20

आप

class MyContext : DbContext 
{ 
    public DbSet<Blog> Blogs { get; set; } 
    public DbSet<BlogImage> BlogImages { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Blog>() 
      .HasOne(p => p.BlogImage) 
      .WithOne(i => i.Blog) 
      .HasForeignKey<BlogImage>(b => b.BlogForeignKey); 
    } 
} 

public class Blog 
{ 
    public int BlogId { get; set; } 
    public string Url { get; set; } 

    public BlogImage BlogImage { get; set; } 
} 

public class BlogImage 
{ 
    public int BlogImageId { get; set; } 
    public byte[] Image { get; set; } 
    public string Caption { get; set; } 

    public int BlogForeignKey { get; set; } 
    public Blog Blog { get; set; } 
} 
+0

और ऐसा कुछ जो स्पष्ट नहीं था मुझे, और दस्तावेज में कोई भी नहीं मिला है (या मुझे यह याद आया), यदि आप चाहते थे कि ब्लॉगइमेज को एक से एक या शून्य के बजाय ब्लॉग से एक रिश्ते हो, (यानी एक ब्लॉग इमेज वैकल्पिक रूप से वैकल्पिक रूप से ब्लॉग का संदर्भ नहीं देता है, आपको केवल BlogImage बनाना होगा .BlogForeignKey nullable, इस तरह: सार्वजनिक int? BlogForeignKey {get; set;} –

+2

क्या यह संपत्ति वास्तव में आवश्यक है? 'सार्वजनिक int BlogForeignKey {get; set;} ' –

2

ऊपर जवाब बिल्कुल सही है नीचे के रूप में इकाई की रूपरेखा 7 में सुविज्ञ एपीआई का उपयोग कर OneToOne संबंधों को परिभाषित कर सकते हैं।

बस पाठकों की जानकारी के लिए: यह official documentation

एक एक-से-एक

एक करने के लिए रिश्तों में अच्छी तरह से समझाया गया है दोनों पक्षों पर एक संदर्भ नेविगेशन संपत्ति है। वे एक ही सम्मेलन का पालन एक-से-कई संबंधों के रूप में करते हैं, लेकिन यह सुनिश्चित करने के लिए कि केवल एक आश्रित प्रत्येक प्रिंसिपल से संबंधित है, विदेशी कुंजी संपत्ति पर एक अद्वितीय इंडेक्स पेश किया गया है।

public class Blog 
{ 
    public int BlogId { get; set; } 
    public string Url { get; set; } 

    public BlogImage BlogImage { get; set; } 
} 

public class BlogImage 
{ 
    public int BlogImageId { get; set; } 
    public byte[] Image { get; set; } 
    public string Caption { get; set; } 

    public int BlogId { get; set; } 
    public Blog Blog { get; set; } 
} 

नोट

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

+2

क्या करें मुझे वास्तव में इस संपत्ति को परिभाषित करने की ज़रूरत है? 'सार्वजनिक int BlogId {get; set;} ' –

+1

@ मोहम्मद न्यूरेल्डिन संपत्ति' सार्वजनिक int BlogId {get; set;} 'की आवश्यकता है क्योंकि" ईएफ इकाइयों में से एक का चयन करेगा एक विदेशी कुंजी संपत्ति का पता लगाने की अपनी क्षमता के आधार पर निर्भर होने के लिए। "एक-से-एक अनुभाग में https://docs.microsoft.com/en-us/ef/core/modeling/relationships में नोट देखें अन्य संबंध पैटर्न के। –

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