Возникли проблемы с Entity Framework и отношениями - PullRequest
0 голосов
/ 13 апреля 2020

Мне трудно понять, как создать отношения с каркасом сущности. (Я использую архитектуру MVC и код первой миграции), например, если у меня есть класс

public class Employee
{
    public int Id { get; set; }
    public string PIN { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

, и у меня есть другой класс, скажем, например, я wi sh для отслеживания часы работы сотрудников

public class EmployeeHours
{
    public int Id { get; set; }
    public DateTime? ClockIn { get; set; }
    public DateTime? ClockOut { get; set; }
    public Employee emplyee { get; set; }
}

Мне трудно понять, как мне эти два класса взаимодействовать друг с другом. Например, если PIN-код Джона Смита - 1234, и он вводит свой PIN-код в текстовое поле, как мне успешно добавить его часы по времени и дате в класс часов сотрудника?

и если у меня есть вид, который выглядит следующим образом, сотрудник вводит свой PIN-код

@using (Html.BeginForm("ClockIn", "Login")) 
{
    @Html.LabelFor(c => c.Employee.PIN)
    @Html.TextBoxFor(c => c.Employee.PIN)<br />

    <button type="submit">Save</button>
}

, а контроллер clockIn выглядит следующим образом

[HttpPost]
public ActionResult ClockIn(string Pin)//employee clocking in
{            
  _context.EmployeeHours.Add();
  _context.SaveChanges();

  return View();
}

Я пытаюсь выяснить, как сохранить время и дату, связанную с этим сотрудником, в классе, чтобы я мог go вернуться назад и посмотреть, когда этот сотрудник заработал. Спасибо!

1 Ответ

1 голос
/ 13 апреля 2020

Добавьте Свойство навигации к Сотруднику, например:

public class Employee
{
    public int Id { get; set; }
    public string PIN { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public virtual ICollection<EmployeeHours> Hours { get; } = new HashSet<EmployeeHours>();
}

Затем используйте его примерно так:

[HttpPost]
public ActionResult ClockIn(string pin)//employee clocking in
{
    var emp = _context.Employees.Where(e => e.Pin == pin).First();
    var hours = new EmployeeHours();
    hours.StartTime = DateTime.Now;
    //...
    emp.Hours.Add(hours);
    _context.SaveChanges();
    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...