यह वन-टू-वन संबंध को कॉन्फ़िगर करने के लिए धाराप्रवाह एपीआई का उपयोग करने पर @Ladislav Mrnka के जवाब के संदर्भ में है।
एक ऐसी स्थिति थी जहाँ FK of dependent must be it's PKहोना संभव नहीं था।
उदाहरण के लिए, Fooपहले से ही एक-से-कई संबंध हैं Bar।
public class Foo {
public Guid FooId;
public virtual ICollection<> Bars;
}
public class Bar {
//PK
public Guid BarId;
//FK to Foo
public Guid FooId;
public virtual Foo Foo;
}
अब, हमें फू और बार के बीच एक-से-एक संबंध जोड़ना था।
public class Foo {
public Guid FooId;
public Guid PrimaryBarId;// needs to be removed(from entity),as we specify it in fluent api
public virtual Bar PrimaryBar;
public virtual ICollection<> Bars;
}
public class Bar {
public Guid BarId;
public Guid FooId;
public virtual Foo PrimaryBarOfFoo;
public virtual Foo Foo;
}
धाराप्रवाह एपीआई का उपयोग करते हुए एक-से-एक रिश्ते को कैसे निर्दिष्ट किया जाए:
modelBuilder.Entity<Bar>()
.HasOptional(p => p.PrimaryBarOfFoo)
.WithOptionalPrincipal(o => o.PrimaryBar)
.Map(x => x.MapKey("PrimaryBarId"));
ध्यान दें कि जोड़ने की PrimaryBarIdजरूरत है, जबकि हम धाराप्रवाह एपीआई के माध्यम से इसे हटाने की जरूरत है।
यह भी ध्यान दें कि विधि का नाम [WithOptionalPrincipal()][1]एक प्रकार की विडंबना है। इस मामले में, प्रिंसिपल बार हैं। Msdn पर withOptionalDependent () विवरण इसे और अधिक स्पष्ट करता है।