У меня есть проект MVC 3, над которым я работаю, используя Entity Framework в качестве моей модели. У меня есть объект «Работодатель», который имеет «Адрес» и «Почтовый адрес», который я хотел бы отображать (просматривать) и обновлять (редактировать) одновременно (то есть на странице с информацией об работодателе и адресах, которая обновляется одновременно )
Кажется, мой взгляд работает нормально:
var employer = (from e in entities.Employers.Include("Address").Include("PostalAddress")
where e.EmployerNumber == employerNumber
select e).First();
return View(employer);
Мои изменения отображаются нормально (т. Е. Все текстовые поля заполнены как работодателем, так и адресом)
[HttpPost]
public ActionResult Edit(Employer employer)
{
if (ModelState.IsValid)
{
entities.Employers.Attach(employer);
entities.ObjectStateManager.ChangeObjectState(employer, EntityState.Modified);
entities.SaveChanges();
return RedirectToAction("Index");
}
return View(employer);
}
Но когда я иду на сохранение, я получаю следующее исключение для строки entity.Employers.Attach (работодатель):
Произошло нарушение ограничения ссылочной целостности: свойство
значения, которые определяют ссылочные ограничения, не согласованы
между главным и зависимым объектами в отношениях.
Когда я смотрю на объект работодателя, который он пытается прикрепить, кажется, что он "потерял" элементы Address и PostalAddress.
Это мой первый проект MVC 3, поэтому любая помощь будет оценена.
Вид страницы редактирования выглядит следующим образом
@model MyProject.BusinessObjects.Employer
@{ ViewBag.Title = "Edit Employer Details"; }
<h2>Edit Employer Details</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Employer</legend>
<div class="editor-label">Name</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<fieldset>
<legend>Address</legend>
<div class="editor-label">Line One</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address.LineOne)
@Html.ValidationMessageFor(model => model.Address.LineOne)
</div>
<div class="editor-label">Line Two</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address.LineTwo)
@Html.ValidationMessageFor(model => model.Address.LineTwo)
</div>
<div class="editor-label">Suburb</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address.Suburb)
@Html.ValidationMessageFor(model => model.Address.Suburb)
</div>
<div class="editor-label">State</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address.State)
@Html.ValidationMessageFor(model => model.Address.State)
</div>
<div class="editor-label">Post Code</div>
<div class="editor-field">
@Html.EditorFor(model => model.Address.PostCode)
@Html.ValidationMessageFor(model => model.Address.PostCode)
</div>
</fieldset>
<p>
<input type="submit" value="Save Changes" />
</p>
</fieldset>
}