मैं एंटिटी फ्रेमवर्क 5 में निम्नलिखित संबंधों को कैसे मैप करूं?इकाई फ्रेमवर्क 5 कोड प्रथम स्व-संदर्भ संबंध
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Item>()
.HasOptional(i => i.ParentItem)
.WithMany(i => i.ChildItems)
.HasForeignKey(i => i.ParentItemId);
}
और इस:
public class Item {
public int Id { get; set; }
public int? ParentItemId { get; set; }
public string Value { get; set; }
public Item ParentItem { get; set; }
public List<Item> ChildItems { get; set; }
}
मैं इस की कोशिश की है
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Item>()
.HasMany(i => i.ChildItems)
.WithOptional(i => i.ParentItem)
.HasForeignKey(i => i.ParentItemId);
}
जो ऐसा गलती से हुआ दोनों परिणाम: आश्रित में सभी संपत्तियों की
प्रकार एक रेफरेंशियल बाधा की भूमिका प्रिय में संबंधित संपत्ति प्रकारों के समान ही होनी चाहिए मुख्य भूमिका।
अगर मैं डेटाबेस पहले मानचित्रण के साथ शुरू करते हैं, यहाँ उत्पन्न इकाई दिखता है की तरह है:
public partial class Item
{
public Item()
{
this.ChildItems = new HashSet<Item>();
}
public int Id { get; set; }
public Nullable<int> ParentItemId { get; set; }
public string Value { get; set; }
public virtual ICollection<Item> ChildItems { get; set; }
public virtual Item ParentItem { get; set; }
}
मैं जानता हूँ कि अगर मैं के साथ शुरू इस काम करेंगे db-पहले, मैं सिर्फ पता है कि कैसे की जरूरत है कोड-पहले में रिश्ते को परिभाषित करें।
कुंजी संपत्ति है 'Id'? या क्या आपके पास एक प्रमुख मैपिंग (फ्लुएंट एपीआई के साथ?) है, उदाहरण के लिए 'वैल्यू'? – Slauma
आईडी आइटम की प्राथमिक कुंजी संपत्ति है। – user326502
"* निर्भर भूमिका में सभी गुणों के प्रकार *" का अर्थ है एफके संपत्ति के प्रकार जो 'ParentItemId' है और' int 'टाइप है। "* प्रिंसिपल रोल * में संबंधित संपत्ति प्रकार * का अर्थ है पीके संपत्ति के प्रकार जो 'आईडी' है और इसमें 'int' टाइप है। वे वही हैं (शून्यता कोई फर्क नहीं पड़ता)। हालांकि, अपवाद कहता है, वे नहीं हैं। अपवाद तब होगा जब आपने उदाहरण के लिए पीके के लिए 'लंबा' (या कोई अन्य प्रकार) और एफके के लिए 'int' 'था। बल्कि अजीब ... – Slauma