[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "StaffID,StartDate,EndDate,LeaveType,NoOfDays,AppStatus,HiddenID,LeaveReason,UpdateDate,UpdatedBy")] CurrentApplication currentApplication, Staff staff)
{
if (ModelState.IsValid)
{
db.CurrentApplications.Add(currentApplication);
currentApplication.UpdateDate = System.DateTime.Now;
currentApplication.AppStatus = "PENDING";
currentApplication.UpdatedBy = User.Identity.Name;
var model = new LeaveIndexData();
var userEmail = User.Identity.Name;
model.Staffs = db.Staffs.Single(i => i.Email == userEmail);
var userID = model.Staffs.StaffID;
currentApplication.StaffID = userID;
//decimal period = (currentApplication.StartDate.Date - currentApplication.EndDate.Date).TotalDays;
//currentApplication.NoOfDays = period;
TimeSpan tSpan = (currentApplication.EndDate.Value).Subtract(currentApplication.StartDate.Value);
currentApplication.NoOfDays = tSpan.Days + 1;
db.Staffs.Add(staff);
staff.BalanceLeave = staff.BalanceLeave - currentApplication.NoOfDays;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(currentApplication);
}
Моя страница выше дает мне ошибку Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
Это было прекрасно и прекрасно работает, пока я не добавил эти две линии:MVC Проверка не для одного или нескольких объектов
db.Staffs.Add (персонал) ;
staff.BalanceLeave = staff.BalanceLeave - currentApplication.NoOfDays;
Я думал, что было бы хорошо сделать это таким образом, так как я добавил в db.Staffs так же, как и для CurrentApplications, но неожиданно дал мне ошибку. Я не уверен, как это решить.
модель My Staff выглядит следующим образом:
public partial class Staff
{
public int StaffID { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public Nullable<decimal> AllocatedLeave { get; set; }
public Nullable<decimal> BalanceLeave { get; set; }
}
Я знаю, что есть подобные вопросы, но те о том, как найти ошибку. Я знаю, что такое ошибка, но я не могу понять, почему у меня это получается, потому что это кажется правильным для меня. Пожалуйста помоги! Спасибо :)
Вы можете увидеть 'EntityValidationErrors' больше деталей о том, что происходит? Это будет намного лучше (чем догадка), чтобы увидеть, что происходит не так. – adricadar
Проверьте ошибку в Quick Watch с помощью этого '((System.Data.Entity.Validation.DbEntityValidationException) ex) .EntityValidationErrors'. Здесь 'ex' - объект исключения. –
@RahulNikate Я получил ошибку конца выражения, ожидаемого на двух проблемных строках, о которых я упомянул выше ._. –