Исключение Nullpointer C # Mvc Entity Framework в List.Add - PullRequest
0 голосов
/ 14 февраля 2019

Когда я пытаюсь Entity Framework с Mvc.Я хочу вставить некоторые данные при создании базы данных, но класс Fword имеет свойства дерева. Когда я пытаюсь добавить его в список или список, я получаю NullPointerException в методе Seed.Может кто-нибудь сказать мне, где я иду не так?

Вот классы DataAccess

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; }

  }

В методе Selow ниже классов я получаю сообщение об ошибке.

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 ]

0 голосов
/ 14 февраля 2019

Ваш список является свойством, которое не инициализировано, и если вы не установите его, оно будет нулевым.если вы хотите избежать этого, даже если он не установлен, присвойте ему значение по умолчанию:

public List<WordType> WT { get; set; } = new List<WordType>()
public List<WordFrequency> WF { get; set; } = new List<WordFrequency>();
0 голосов
/ 14 февраля 2019

Ваш список пуст.Вы должны создать его экземпляр, прежде чем добавлять в него элементы.

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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...