Sto usando database In primo luogo, EF 4.1Il tipo di entità List`1 non fa parte del modello per il contesto attuale
sto ottenendo "Il tipo di entità List`1 non è parte del modello per il contesto attuale. " errore durante il tentativo di aggiornare un record dalla mia vista Modifica.
L'errore si verifica in
db.Entry(properties).State = EntityState.Modified;
Ecco il mio modello:
public class Users
{
[Key]
public int User_ID { get; set; }
public string UserName { get; set; }
[NotMapped]
public IEnumerable<App_Properties> User_Properties
{
get { return Properties.Where(u => u.User_ID == User_ID); }
}
public virtual ICollection<App_Properties> Properties { get; set; }
}
public class App_Properties
{
[Key]
public int Prop_ID { get; set; }
public int User_ID { get; set; }
public int App_ID { get; set; }
public string Key { get; set; }
public string Value { get; set; }
public DateTime DateEntered { get; set; }
public DateTime DateModified { get; set; }
[ForeignKey("User_ID")]
public virtual Users Users { get; set; }
}
Ecco il mio controller:
[HttpPost]
public ActionResult Edit(ICollection<App_Properties> properties)
{
if (ModelState.IsValid)
{
foreach (var item in properties)
{
db.Entry(properties).State = EntityState.Modified;
}
db.SaveChanges();
return RedirectToAction("Index");
}
return View(properties);
}
Ho il sospetto che il ciclo foreach non è appropriato in impostazione l'EntityState per ogni oggetto in un ICollection.
Qualsiasi assistenza sarebbe molto apprezzata.
Una nota semantica rapida, i App_Properties.Users nome implicherebbe più utenti, non uno. La convenzione tende ad essere che un singolo oggetto ha un nome singolare che dice 'var users = new Users()' implica una raccolta di persone, non un singolo elemento. – Leniency
Sì, grazie ... Non ho il controllo del DB e lascio che il nome improprio delle tabelle si propaghi nel mio codice. –
I nomi db non devono per forza - è molto facile cambiare la mappatura del tuo POCO nella tabella del database attuale OnModelCreating: 'modelBuilder.Entity() .ToTable (" Users ")'. Una semplice ridenominazione di F2 nella classe Users propagherà quindi la rinomina nel progetto. Lo stesso vale per i nomi di proprietà: puoi personalizzarne una qualsiasi. http://weblogs.asp.net/scottgu/archive/2010/07/23/entity-framework-4-code-first-custom-database-schema-mapping.aspx –
Leniency