La Liste type d'entité`1 ne fait pas partie du modèle dans le contexte actuel

J'ai été en utilisant la Base de données tout d'Abord, EF 4.1

Je suis "La Liste type d'entité`1 ne fait pas partie du modèle dans le contexte actuel." erreur lors de la tentative de mise à jour d'un enregistrement de Modifier mon point de Vue.

L'erreur se produit à

db.Entry(properties).State = EntityState.Modified;

Voici mon Modèle:

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; }
}

Voici mon 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);
}

Je soupçonne la boucle foreach n'est pas appropriée dans le réglage de la EntityState pour chaque élément dans une ICollection.

Toute aide serait grandement appréciée.

  • Un rapide sémantique remarque, le nom App_Properties.Les utilisateurs impliquerait plusieurs utilisateurs, pas un seul. Convention tend à être qu'un objet a un nom singulier que de dire var users = new Users() implique un ensemble de personnes, pas un seul élément.
  • Oui, merci... je n'ai aucun contrôle de la bd et j'ai laissé le mauvais nommage des tables se propager vers le bas dans mon code.
  • La db les noms n'ont pas bien - il est très facile de changer le mapping de votre POCO de la base de données de la table OnModelCreating: modelBuilder.Entity<User>().ToTable("Users"). Un simple F2 renommer sur les Utilisateurs de la classe se propager ensuite le renommer l'ensemble de votre projet. Même avec les noms de propriétés - vous pouvez personnaliser la carte de tout ça. weblogs.asp.net/scottgu/archive/2010/07/23/...
InformationsquelleAutor Isaac Vallee | 2012-03-27