Вставить данные в базу данных с отношением 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 позаботится об отношениях.