मुझे यहां बहुत सारे प्रश्न मिल गए हैं, लेकिन उनमें से कोई भी मेरी समस्या से मेरी सहायता नहीं करता है। Fluent api & गुणों की मदद नहीं की। डेटाबेस बनाया गया था, लेकिन जब कोई ऑब्जेक्ट जोड़ रहा था, तो यह क्रैश हो गया। मैं एक कक्षा चाहता हूं जिसमें स्वयं का संग्रह हो। यहाँ है कोड मैं: डेटाबेस मेंकोड प्रथम - कई संबंधों में से एक को संदर्भित करना
[Table("UObjects")]
public class UObject
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Browsable(false)]
public long ID { get; set; }
public string Name { get; set; }
[Browsable(false)]
public long? ParentID { get; set; }
public virtual UObject UParent { get; set; }
[Browsable(false)]
public virtual ICollection<UObject> UObjects { get; set; }
}
public class MyContext : DbContext
{
public DbSet<UObject> UObjects { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// This fluent API didn't help
//modelBuilder.Entity<UObject>()
// .HasOptional(u => u.UParent)
// .WithMany(u => u.UObjects)
// .HasForeignKey(u => u.ParentID);
//modelBuilder.Entity<UObject>()
// .HasOptional(u => u.UParent)
// .WithMany(u => u.UObjects)
// .Map(c =>
// {
// c.MapKey("ParentID");
// c.ToTable("UObjects");
// });
}
}
रिकॉर्ड्स इस तरह हैं:
ID | Name | ParentID
------------------------------------
1 | First | 0
2 | SubFirst | 1
3 | SubSecond | 1
4 | SubThird | 2
5 | SubFourth | 2
तो मेरी वस्तु संस्थाओं लोड करने के बाद कैसी दिखनी चाहिए, बगल में है:
- First
- SubFirst
- SubThird
- SubFourth
- SubSecond
लेकिन हर वस्तु एक खाली संग्रह है। इसे ठीक से काम करने के लिए मुझे क्या करना चाहिए?
यह जांचें http://stackoverflow.com/questions/10421351/many-to-many-relationship-between-entities-of-same-type-in-mvc3/10422172#10422172 – Shyju
इसे पहले से ही आजमाया गया। इसने डेटाबेस बनाया लेकिन यह नई ऑब्जेक्ट जोड़ने और SaveChanges() – GaaRa
"* यह क्रैश * * को कॉल करते समय क्रैश हो जाता है, वास्तव में एक अच्छी समस्या का विवरण नहीं है। 1) बिल्कुल अपवाद क्या है? 2) जब आप रिक्त संग्रह वाले इकाइयों को लोड करते हैं तो आप किस क्वेरी को चलाते थे? 3) आपके पास पहली डेटाबेस पंक्ति में '0' का 'पैरेंट आईडी' क्यों है? यह एक रेफरेंशियल बाधा का उल्लंघन करता है ('आईडी' 0 के साथ कोई पंक्ति नहीं है)। या क्या आपका मतलब 'नूल' है? – Slauma