Свойство EF5 не будет сохранено в базе данных - PullRequest
0 голосов
/ 28 мая 2018

Итак, я создаю простое приложение 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 для представления create:

    [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");
    }

Идея состоит в том, чтобы поговорить с базой данных, найти объект Employee с тем же EmployeeId и установить имя и фамилию объекта employee объектаОбъект abb будет таким же, и после тестирования его с помощью отладчика я вижу, что он работает.

Однако, когда я хочу отобразить все добавленные отсутствия, включая имя и фамилию своего сотрудника, следующим образом:

    public ActionResult Index()
    {
        return View(database.Absences.ToList());
    }

Имя и фамилия всех сотрудников не отображаются.

Похоже, что все свойства сохраняются в базе данных с использованием структуры объекта, за исключением объекта Employee.

Есть идеи как его сохранить?

1 Ответ

0 голосов
/ 29 мая 2018

Можете ли вы сначала попытаться сохранить «Отсутствия» перед обновлением данных о сотруднике?Я точно не знаю, как настроены ваши модели баз данных, и это только предположение.Отсутствие ссылки на вашего сотрудника еще недоступно, когда вы предоставляете данные сотрудника.

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();
...