Search code examples
entity-frameworkef-code-firstentity-framework-5

How should I seed data to many to many relation in Entity Framework Code first 5.0


I am having my first steps in EF 5.0 I have a many to many relationship. Movie can Have multiple Types and Type can have multiple Movies

public class Movie
{
    public int MovieId { get; set; }
    [Required]
    public string Name { get; set; }

    public virtual ICollection<Type> Types { get; set; }
}


public class Type
{
    public int TypeId { get; set; }
    public string MovieType { get; set; }

    public virtual ICollection<Movie> Movies { get; set; }
}

When I generated the Database it creates many-to-many between Movie and type

So, What should i do to seed this many to many table? I tried many solution posted here but it didn't works.

Also, is this the best way to Generate a Many-To-Many Relation using EF code first


Solution

  • Just create a few movies and a few types and create relationships by adding some of those types to the Movie.Types collection (or the other way around), for example:

    protected override void Seed(MyContext context)
    {
        var movie1 = new Movie { Name = "A", Types = new List<Type>() };
        var movie2 = new Movie { Name = "B", Types = new List<Type>() };
        var movie3 = new Movie { Name = "C", Types = new List<Type>() };
    
        var type1 = new Type { MovieType = "X" };
        var type2 = new Type { MovieType = "Y" };
    
        movie1.Types.Add(type1);
    
        movie2.Types.Add(type1);
        movie2.Types.Add(type2);
    
        movie3.Types.Add(type2);
    
        context.Movies.Add(movie1);
        context.Movies.Add(movie2);
        context.Movies.Add(movie3);
    }