Вставить данные в базу данных с отношением FK

Я использую code-first для генерации базы данных и данных во время выполнения.

Мои два класса / модели имеют отношения один ко многим. Поскольку FK не может быть пустым, я сначала вставляю Стандарт, а затем вставляю Студента, а также вручную ввожу идентификатор FK. Тем не менее я все еще получаю System.NullReferenceException а я просто не могу понять почему?

Я пробовал поискать в Google, но не могу найти соответствующую статью о вставке данных с иностранными связями с нуля в коде в первую очередь.

Моя сущность Класс / Модель

public class Student {
    public Student() { }
    public int StudentID { get; set; }
    public string StudentName { get; set; }

    public int StandardId { get; set; } // FK StandardId
    public Standard Standard { get; set; } }

public class Standard {
    public Standard() { }
    public int StandardId { get; set; }
    public string StandardName { get; set; } 

    public ICollection<Student> Students { get; set; } }

Мой основной

using (MyDbContext ctx = new MyDbContext())
{
    Standard std = new Standard();
    ctx.Standards.Add(std);
    ctx.SaveChanges(); // Database already has a StandardID = 1

    Student stud = new Student()
    {
        StudentName = "John",
        StandardId = 1  // I even manually type in the FK
    };

    ctx.Student.Add(stud); // I still get 'System.NullReferenceException'
    ctx.SaveChanges();
}

1 ответ

Решение

Не добавляйте вручную StandardId, сделай это:

using (MyDbContext ctx = new MyDbContext())
{
    Standard std = new Standard();

    Student stud = new Student()
    {
        StudentName = "John",
    };

    stud.Standard = std;

    ctx.Student.Add(stud);
    ctx.SaveChanges();
}

EF позаботится об отношениях.

Другие вопросы по тегам