EF5对象属性不会保存在数据库中

时间:2018-05-28 19:43:25

标签: object model-view-controller entity

所以我创建了一个简单的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对象除外。

有关如何保存它的任何想法?

1 个答案:

答案 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();