У меня есть два класса - родительский и дочерний.
Это родительский класс
[Table("tbl_Parent")]
public partial class Parent
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[ScaffoldColumn(false)]
public int Parent_Id { get; set; }
[Required(ErrorMessage = "you must provide parent First Name")]
[Display(Name = "Full Name")]
public string Parent_Full_Name{ get; set; }
[Required(ErrorMessage = "you must provide parent Email Address")]
[Display(Name = "Email Address")]
[DataType(DataType.EmailAddress)]
[EmailAddress(ErrorMessage = "Correct Input")]
[StringLength(100, ErrorMessage = "at least 10 Char", MinimumLength = 10)]
public string Parent_Email { get; set; }
[Required(ErrorMessage = "you must provide parent phone number")]
[Display(Name = "Phone Number")]
[DataType(DataType.PhoneNumber)]
public int Parent_Phone { get; set; }
[Required(ErrorMessage = "you must provide parent password")]
[Display(Name = "Password")]
[DataType(DataType.Password)]
public string Parent_Password { get; set; }
public string Parent_Location { get; set; }
[Required(ErrorMessage = "you must provide parent status")]
[Display(Name = "Parent status")]
public string Parent_status { get; set; }
public string Par_User_Type { get; set; }
public ICollection<Child> child { get; set; }
}
и это дочерний класс
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Chi_Id { get; set; }
[Required(ErrorMessage ="you must provide child first name")]
[Display(Name ="Child First Name")]
public string Chi_First_Name { get; set; }
[Required(ErrorMessage ="you must provide child last Name")]
[Display(Name ="Child Last Name")]
public string Chi_Last_Name { get; set; }
[Required(ErrorMessage ="you must provide child age")]
[Display(Name ="Child Age")]
[Range(0,18, ErrorMessage = "Correct Input")]
public int Age { get; set; }
[Required(ErrorMessage ="you must provide child gender")]
[Display(Name ="Child Gender")]
public string Gender { get; set; }
[Display(Name ="Child School")]
public string Chi_School { get; set; }
[Required(ErrorMessage ="you must provide parent status")]
[Display(Name ="Child Parent Status")]
public string Chi_parent_status { get; set; }
[Display(Name ="Child Image Path")]
public string Chi_Image_Path { get; set; }
public virtual Admin admin { get; set; }
public int Adm_ID { get; set; }
public virtual Parent parent { get; set; }
public int Par_ID { get; set; }
}
Родительский класс может иметь много детей.
Я хочу добавить идентификатор ребенка в родительский класс через контроллер. Это мой контроллер:
[HttpGet]
public ActionResult Rigester()
{
if (Session["ID"] == null)
{
return RedirectToAction("Login", "Home");
}
return View();
}
[HttpPost]
public ActionResult Rigester(Parent parent,int id)
{
if (ModelState.IsValid)
{
using (Context db = new Context())
{
var child1 = db.child.Where(x => x.Chi_Id == id).First();
parent.Par_User_Type = "Parent";
parent.child.Add(child1);
db.parent.Add(parent);
db.SaveChanges();
return RedirectToAction("Home", "Admin");
}
}
return View();
}
В контроллере я получаю ошибку при выполнении этого кода:
Исключение нулевой ссылки
на этом строка кода:
parent.child.Add(child1);
Конец каждого класса связан с другим классом.
Как добавить дочерний элемент при регистрации нового родителя?