Я определил следующие два класса:
public class User
{
public System.Guid UserId { get; set; }
public System.Guid? ContactId { get; set; }
public string UserName { get; set; }
public virtual Contact Contact { get; set; }
}
public class Contact
{
public System.Guid ContactId { get; set; }
public string PhoneNumber { get; set; }
}
И ниже приведено сопоставление:
this.HasOptional(u => u.Contact)
.WithMany()
.HasForeignKey(u => u.ContactId);
Я определил страницу редактирования в MVC 3 для обновления информации пользователя,страница содержит свойства пользователя + свойства контакта пользователя:
<div class="editor-field">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Contact.PhoneNumber)
@Html.ValidationMessageFor(model => model.Contact.PhoneNumber)
</div>
И в методе поста контроллера:
[HttpPost]
public ActionResult Edit(User user)
{
if (ModelState.IsValid)
{
context.Entry(user).State = EntityState.Modified;
context.SaveChanges();
return RedirectToAction("Index");
}
return View(user);
}
Но это выдает:
A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship.
в строке: context.Entry(user)...
,
В чем причина этого исключения?и как я могу обновить Пользователь и контактные лица, не конфликтуя друг с другом в MVC 3?
Спасибо.