所以我创建了一个简单的MVC应用程序,该应用程序使用Absence类作为模型,该模型包含不同的属性,包括Employee类中的对象 - 另一个包含各种属性的模型:
public class Absence
{
public int Id { get; set; }
public string Reason { get; set; }
public int Day { get; set; }
public int Month { get; set; }
public bool isApproved { get; set; }
public int employee_Id { get; set; }
public virtual Employee employee { get; set; }
public Absence()
{
employee = new Employee();
}
}
我创建了一个具有创建视图的ActionResult函数的控制器:
[HttpGet]
public ActionResult Create()
{
Absence abs = new Absence();
return View(abs);
}
[HttpPost]
public ActionResult Create(Absence abb)
{
Employee emp = database.Employees.FirstOrDefault(z => z.Id == abb.employee_Id);
System.Diagnostics.Debug.WriteLine(emp.Name);
abb.employee.Name = emp.Name;
abb.employee.Surname = emp.Surname;
System.Diagnostics.Debug.WriteLine(abb.employee.Name);
database.Absences.Add(abb);
database.SaveChanges();
return Redirect("/Absence");
}
我的想法是与数据库交谈,找到一个具有相同EmployeeId的Employee对象,并将abb对象的employee对象的名称和姓氏设置为相同,并在使用调试器测试后,我可以看到它有效
但是,当我想显示所有增加的缺席时,包括其员工的姓名和姓氏:
public ActionResult Index()
{
return View(database.Absences.ToList());
}
所有员工的姓名不会显示。
似乎所有属性都使用实体框架保存在数据库中,但Employee对象除外。
有关如何保存它的任何想法?
答案 0 :(得分:0)
您可以在更新员工详细信息之前先尝试保存缺勤吗?我并不完全知道您的数据库模型是如何配置的,这只是一个假设。当您提供员工详细信息时,尚未提供引用您员工的缺席。
Employee emp = database.Employees.FirstOrDefault(z => z.Id == abb.employee_Id);
database.Absences.Add(abb); //Moved adding here
database.SaveChanges(); // Perform the saving
abb.employee.Name = emp.Name;
abb.employee.Surname = emp.Surname;
database.SaveChanges();