Ne contient pas une définition pour “Ajouter”

Je suis en train de faire la même chose comme dans cette thread, mais j'obtiens une erreur:

'Système.Les Collections.Génériques.IEnumerable' ne contient pas une définition pour 'Ajouter' et aucune méthode d'extension 'Ajouter' acceptant un premier argument de type 'System.Les Collections.Génériques.IEnumerable' a pu être trouvé (vous manque une directive using ou une référence d'assembly?)

Voici mon code:

[HttpPost]
public ActionResult Create(ANIME anime)
{
    var db = new MainDatabaseEntities();
    var newanime = new ANIME
    {
        ID_AN = anime.ID_AN,
        TITLE_OR = anime.TITLE_OR,
        TITLE_EN = anime.TITLE_EN,
        GENRES = new List<GENRES>()
    };

    foreach (var selectedAnime in anime.GENRES.Where(c => c.isSelected))
    {
        var genre = new GENRES { ID_GE = selectedAnime.ID_GE };
        db.GENRES.Attach(genre);
        newanime.GENRES.Add(genre); <--- this is the error line
    }

    db.ANIME.Add(newanime);
    db.SaveChanges();
    return RedirectToAction("Index");
}

ANIME:

public partial class ANIME
{
    public int ID_AN { get; set; }
    public string TITLE_OR { get; set; }
    public string TITLE_EN { get; set; }

    public virtual IEnumerable<GENRES> GENRES { get; set; }
}

GENRES:

public partial class GENRES
{
    public int ID_GE { get; set; }
    public string GENRE { get; set; }
    public bool isSelected { get; set; }
    public virtual ICollection<ANIME> ANIME { get; set; }
}

L'erreur est dans la ligne de newanime.GENRES.Add(genre) dans HttpPost. J'ai ajouté using System.Linq à tous les modèles et les contrôleurs, mais il n'aide pas. Toutes les idées sur la façon de résoudre ce problème?

EDIT:

Après la réparation de ce un nouveau message d'erreur est arrivée. Je pense qu'il n'est pas lié à ci-dessus mais je ne veux pas de spam inutile de threads.

Message d'erreur:

L'entité ou de complexes de type 'MainDatabaseModel.Les GENRES ne peuvent pas être construits en une requête LINQ to entities.

Liées code:

public ActionResult Create()
{
    var db = new MainDatabaseEntities();
    var viewModel = new ANIME
    {
        GENRES = db.GENRES.Select(c => new GENRES
        {
            ID_GE = c.ID_GE,
            GENRE = c.GENRE,
            isSelected = false
        }).ToList()
    };
    return View(viewModel);       
}
  • ce post expliquer un peu plus votre question stackoverflow.com/questions/1210295/...
  • il n'y a pas de .Add méthode dans Linq soit; IEnumerables ne peut pas être modifié.
  • La question que vous vous lien utilise la IEnumerable pour un modèle de vue. Vous êtes à l'aide de votre Entité Cadre entités comme les modèles de vue (à propos de laquelle je vous ai averti sur une question précédente), vous ne pouvez pas appliquer cette logique que les modèles besoin ICollection pour les propriétés de navigation sont un-à-plusieurs relations. Il suffit de changer IEnumerable<T> à ICollection<T>.
  • Si je peux demander, pourquoi l'étrange conventions de nommage sur vos propriétés/classes? En C#, nous utilisons Pascal Cas pour les propriétés, les méthodes et les types, et nous utilisons camelCase pour les champs (qui ne sont généralement pas exposés)
InformationsquelleAutor Placek | 2013-12-02