Я искал много сообщений и узнал, что это один из способов настройки отношений один к одному в EF, но похоже, что редактирование не работает очень хорошо ,отношения один к одному, ASP.NET MVC и ошибка ссылочной целостности
public class Employee
{
[Key]
public int EmpId { get; set; }
public string Name{ get; set; }
public int WorkingDateTimeId { get; set; }
public virtual WorkingDateTime WorkingDateTimes { get; set; }
}
public class WorkingDateTime
{
[ForeignKey("Employees")]
public int WorkingDateTimeId { get; set; }
public string Day { get; set; }
public virtual Employee Employees { get; set; }
}
Когда я создаю, он создает. Но WorkingDateTimeId свойства в сущности Сотрудника всегда 0.
<div class="form-group">
@Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.WorkingDateTimes.Day, "Monday: ", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.WorkingDateTimes.Day, new { htmlAttributes = new { @class = "form-control time_element" } })
</div>
</div>
При редактировании, я получаю эту ошибку: реляционного нарушения ограничения целостности произошло: Значение свойства (ы) «Employee.EmpId» на одном конце отношения не соответствуют значениям свойств 'WorkDateTate.WorkingDateTimeId' на другом конце.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "EmpId,Name,WorkingDateTimes")] Employee employee)
{
db.Entry(employee).State = EntityState.Modified; // causing problem here
}
Является ли отношение моего к одному неправильным? Что нужно сделать для правильного редактирования и сохранения в db? Любая помощь приветствуется.
это не работает кстати – pavilion
Что происходит? Необходимы ошибки. –