System.NullReferenceException: Object reference not set to an instance of an object.
I'm developing a Asp.net Api which consist in the updating a existing Object into another, but when I use the controller, return the following error:
System.NullReferenceException: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
This is the model:
public class Teacher { [Key] public int? Dni {get; set; } public string? FirstName {get; set; } public string? SurName {get; set; } public string? Email {get; set; } public string? Password {get; set;} public bool? Status {get; set; } } public class Subject { public string? id {get;set;} public string? Title {get; set; } public int? Credits {get; set; } public int? TeacherDni {get; set;} [ForeignKey(nameof(TeacherDni))] public virtual Teacher Teacher {get; set;} }
public class Teacher { [Key] public int? Dni {get; set; } public string? FirstName {get; set; } public string? SurName {get; set; } public string? Email {get; set; } public string? Password {get; set;} public bool? Status {get; set; } } public class Subject { public string? id {get;set;} public string? Title {get; set; } public int? Credits {get; set; } public int? TeacherDni {get; set;} [ForeignKey(nameof(TeacherDni))] public virtual Teacher Teacher {get; set;} }
The controller logic consist in the searching through Subject to find whether a teacher is settled (I mean when it's not null) or not. If is does exist, then search for a existing Teacher and set teacher using his Dni as a foreign key :
[HttpPut("/Enroll/{subjectid}")]public IActionResult EnrollTeacher(string subjectid, int teacherDni) { var subject = _context.Subject.GetSubjectById(subjectid); if(subject.TeacherDni == null) //NullReferenceException { return NotFound(); } var teacher = _context.Teacher.GetTeacherbyDni(teacherDni); subject.TeacherDni = teacher.Dni; _context.UnitOfWork.SaveChanges(); return Ok(subject); }
[HttpPut("/Enroll/{subjectid}")]public IActionResult EnrollTeacher(string subjectid, int teacherDni) { var subject = _context.Subject.GetSubjectById(subjectid); if(subject.TeacherDni == null) //NullReferenceException { return NotFound(); } var teacher = _context.Teacher.GetTeacherbyDni(teacherDni); subject.TeacherDni = teacher.Dni; _context.UnitOfWork.SaveChanges(); return Ok(subject); }
I must to mention that I'm doing this with existing data of database's seed .