Я пытаюсь обновить сущность и все ее отношения, и я не уверен, что это возможно. Если это невозможно, каков наилучший способ обойти это?Entity Framework Update Entity
Мои ASP MVC контроллер ...
public ActionResult TimeSheetEdit(Timesheet timesheet, string submitType)
{
_timesheetRepository.Update(timesheet);
_timesheetRepository.Commit();
return RedirectToAction("TimeSheetEdit", new {id=timesheet.TimeSheetId});
}
Мой табель Модель имеет несколько свойств, одно свойство является другое лицо (которое имеет список лиц). Я надеялся, что EF пойдет по всем моим отношениям и обновит все, но похоже, что он обновляет только модель расписания и игнорирует все другие связанные объекты.
Это нормально или я что-то упускаю? Если это нормально, какая практика для достижения того, что я пытаюсь сделать?
Repository Обновить код ...
public void Update(T entity)
{
_dbSet.Attach(entity);
_context.Entry(entity).State = EntityState.Modified;
}
public int Commit()
{
return _context.SaveChanges();
}
Я не уверен, если это поможет, но вот мои модели
Timesheet
public class Timesheet
{
[Key]
public int TimeSheetId { get; set; }
public Guid Id { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public TimeSheetStatus TimeSheetStatus { get; set; }
public int EmployeeId { get; set; }
public virtual Employee Employee { get; set; }
public virtual List<TimesheetLine> TimesheetLines { get; set; }
}
TimesheetLine
public class TimesheetLine
{
[Key]
public int TimeSheetLineId { get; set; }
public Guid CustomerId { get; set; }
public string CustomerName { get; set; }
public Guid EarningsId { get; set; }
public virtual List<TimeSheetLineUnit> Units { get; set; }
public int TimeSheetId { get; set; }
public virtual Timesheet Timesheet { get; set; }
}
Время SheetLineUnit
public class TimeSheetLineUnit
{
[Key]
public int UnitId { get; set; }
public decimal Hours { get; set; }
[DisplayName("Notes")]
public string Description { get; set; }
public int Index { get; set; }
public int TimeSheetLineId { get; set; }
public virtual TimesheetLine TimesheetLine { get; set; }
}
Put контрольную точку в YOUT ActionResult и посмотреть, является ли вашей собственности (типа другого объекта) имеет обновленный стоимость. – Shyju
Я сделал это. Я могу увидеть обновленное значение всех свойств в методе Controller и Update после отправки моей формы. – Safari137
Одна вещь о MVC заключается в том, что он использует атрибут name для обработки/отправки данных обратно на сервер. Каждое имя в списке дочерних записей должно быть уникальным. – Gwasshoppa