J'ai un modèle de référencement auto avec clé primaire composite dans ASP.NET MVC 3 en utilisant le code première approche:Mise à jour composite clé étrangère
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; }
}
Et je voudrais avoir un contrôleur avec des opérations créer et modifier qui peut fonctionne avec toutes les propriétés, y compris le composite Parent
(qui doit être préalablement ajouté à la base de données).
J'ai réussi à faire fonctionner la méthode create, mais pour éditer le champ complexe ne veut pas mettre à jour. Les données d'entrée pour la méthode suivante analyse avec succès l'objet area
qui a également area.Parent.Id1
et area.Parent.Id2
ensemble.
code actuel qui n'enregistre pas les modifications de modifications à 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);
}