Ho un progetto MVC e utilizzo gli oggetti Entity Framework Code First e POCO per il database. Ad esempio:Come aggiornare le entità correlate in Entity Framework
Ho un ActionResult che crea o modifica un modello. Il problema è quando chiamo ActionResult per aggiornare il modello e model.B
è stato modificato, la relazione non è stata salvata nel database. Quando viene chiamato ActionResult per creare un nuovo oggetto, funziona come previsto. Come lo risolvo?
public ActionResult Save(ClassA model)
{
model.B = GetBFromDb(model.B.Id.Value);
if(ModelState.IsValid)
{
if (id.HasValue)
{
context.Entry(model).State = System.Data.EntityState.Modified;
}
else
{
context.ClassAs.Add(model);
}
context.SaveChanges();
// redirect to index etc.
}
return View("EditForm", model);
}
in modalità disconnessa, quando non si dispone di una chiave esterna ci sono alcuni vuoti che EF non può aggirare e devi provare un codice extra. Altrimenti non può vedere la relazione. Con la proprietà FK, è un valore scalare e più facile per EF tenere traccia di tutti i processi. In realtà ho scritto la mia colonna dei punti dati gen 2012 su questo argomento esatto! EF è molto più facile da usare quando si ha una proprietà scalare FK. Altrimenti molte funzioni che ti aspetti di "solo lavorare" non possono obbligarti a capire meglio cosa sta succedendo e come fornire le informazioni necessarie. Scusa se non ho visto l'FK mancante prima di –
@JulieLerman, nessun problema, grazie per il tuo aiuto! :) – Marthijn