У меня есть самоссылающаяся модель с составным первичным ключом в ASP.NET MVC 3, использующая код вначале:
public class Area
{
[Key, Column(Order=0)]
public int Id1 { get; set; }
[Key, Column(Order=1)]
public int Id2 { get; set; }
public string Name { get; set; }
public virtual Area Parent { get; set; }
}
И я хотел бы иметь контроллер с операциями создания и редактирования, который может работать со всеми свойствами, включая составные Parent
(которые должны быть предварительно добавлены в базу данных).
Мне удалось запустить метод create, но для редактирования сложного поля не требуется обновление. Входные данные для следующего метода успешно анализируются для объекта area
, для которого также установлены area.Parent.Id1
и area.Parent.Id2
.
Текущий код, который не сохраняет изменения для изменений в Parent
:
[HttpPost]
public ActionResult Edit(Area area)
{
try
{
if (ModelState.IsValid)
{
if (area.Parent != null)
{
area.Parent = db.Areas.Find(area.Parent.Id1, area.Parent.Id2);
if (area.Parent == null)
throw new NotFoundException();
// need to mark it as modified...
}
db.Entry(area).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (NotFoundException)
{
//...
}
return View(area);
}