जब मैं एमवीसी के साथ इकाई फ्रेमवर्क की कोशिश करता हूं। डेटाबेस बनाते समय मैं कुछ डेटा सम्मिलित करना चाहता हूं लेकिन Fword वर्ग में ट्री गुण होते हैं। जब मैं इसकी सूची या सूची में जोड़ने का प्रयास करता हूं तो मुझे बीज विधि पर NullPointerException मिला। क्या कोई मुझे बता सकता है कि मैं कहाँ गलत हूँ?
यहाँ डेटा एक्सेस क्लासेस हैं
public class MyContext : DbContext
{
public MyContext () : base("MyContext")
{
Database.SetInitializer(new VeritabaniOlusturucu());
}
public DbSet<FWord> words { get; set; }
public DbSet<WordType> WT { get; set; }
public DbSet<WordFrequency> WF { get; set; }
}
नीचे वर्ग बीज विधि में मुझे त्रुटि मिलती है।
public class VeritabaniOlusturucu : CreateDatabaseIfNotExists<EWLContext>
{
protected override void Seed(MyContext context)
{
WType wt = new WType();
wt.Type = "determiner";
FWord fw = new FWord();
fw.Word = "try";
fw.WT.Add(wt);//I got here error
fw.WF.Add(new WordFrequency { Frequency = "B1" });//and here
fw.WF.Add(new WordFrequency { Frequency = "B2" });//and here
context.FWords.Add(fw);
context.SaveChanges();
}
}
यहाँ इकाई वर्ग हैं
[Serializable]
public class FWord
{
public FWord()
{
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public String Word { get; set; }
public List<WordType> WT { get; set; }
public List<WordFrequency> WF { get; set; }
}
[Serializable]
public class WordType
{
public WordType()
{
}
[Key]
public int Id { get; set; }
public String Type { get; set; }
public virtual FWord Freq { get; set; }
}
[Serializable]
public class WordFrequency
{
public WordFrequency()
{
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public String Frequency { get; set; }
public virtual FWord Freq { get; set; }
}
धन्यवाद।
2 जवाब
आपकी सूची एक ऐसी संपत्ति है जिसे प्रारंभ नहीं किया गया है और जब तक आप इसे सेट नहीं करते हैं, यह शून्य है। यदि आप इससे बचना चाहते हैं, भले ही यह सेट न हो, इसे एक डिफ़ॉल्ट मान दें:
public List<WordType> WT { get; set; } = new List<WordType>()
public List<WordFrequency> WF { get; set; } = new List<WordFrequency>();
आपकी सूची शून्य है। इसमें आइटम जोड़ने से पहले आपको इसे इंस्टेंट करना होगा।
protected override void Seed(MyContext context)
{
WType wt = new WType();
wt.Type = "determiner";
FWord fw = new FWord();
fw.Word = "try";
fw.WT = new List<WordType>();
fw.WT.Add(wt);
fw.WF.Add(new WordFrequency { Frequency = "B1" });//and here
fw.WF.Add(new WordFrequency { Frequency = "B2" });//and here
context.FWords.Add(fw);
context.SaveChanges();
}
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।