এটি এক-এক সম্পর্ককে কনফিগার করার জন্য সাবলীল এপি ব্যবহার করার বিষয়ে @ লাডিস্লাভ মির্নকের জবাবের প্রসঙ্গে।
এমন পরিস্থিতি 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]এক ধরণের বিড়ম্বনার। এই ক্ষেত্রে, অধ্যক্ষ হলেন বার। এমএসডিএন-র সাথে ওপশনাল ডিপেন্ডেন্ট () বর্ণনা এটি আরও স্পষ্ট করে তোলে।