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