जब मैं एमवीसी के साथ इकाई फ्रेमवर्क की कोशिश करता हूं। डेटाबेस बनाते समय मैं कुछ डेटा सम्मिलित करना चाहता हूं लेकिन 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; }
 }

धन्यवाद।

-1
Tekin Güllü 14 फरवरी 2019, 22:42

2 जवाब

सबसे बढ़िया उत्तर

आपकी सूची एक ऐसी संपत्ति है जिसे प्रारंभ नहीं किया गया है और जब तक आप इसे सेट नहीं करते हैं, यह शून्य है। यदि आप इससे बचना चाहते हैं, भले ही यह सेट न हो, इसे एक डिफ़ॉल्ट मान दें:

public List<WordType> WT { get; set; } = new List<WordType>()
public List<WordFrequency> WF { get; set; } = new List<WordFrequency>();
0
Ashkan Mobayen Khiabani 14 फरवरी 2019, 23:00

आपकी सूची शून्य है। इसमें आइटम जोड़ने से पहले आपको इसे इंस्टेंट करना होगा।

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();
    }
0
Maxinoume 14 फरवरी 2019, 22:50