यह वन-टू-वन संबंध को कॉन्फ़िगर करने के लिए धाराप्रवाह एपीआई का उपयोग करने पर @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 () विवरण इसे और अधिक स्पष्ट करता है।