'entity framework seed in OnModelCreating with many-to-many relatioship

i have 2 class with a many to many relationship

public class Actor
{
    public int Id { get; set; }
    public string Name { get; set; }

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

public class Movie
{
    public int Id { get; set; }
    public string Name { get; set; }

    public ICollection<Actor> Actors { get; set; }
}

I would like to add data in the generated tables via the OnModelCreating.

I have always un error because actormovie don't exist at this time.

Might you help me ?



Solution 1:[1]

I found the solution on Join entity type configuration

Use this to seed data OnModelCreating for the joining table:


protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
      .Entity<Actor>()
      .HasData(new Actor { Id = 1, Name = "Keanu Reeves" });

    modelBuilder
      .Entity<Movie>()
      .HasData(
             new Movie { Id = 1, Name = "Matrix" }, 
             new Movie { Id = 2, Name = "John Wick" });

    modelBuilder
      .Entity<Actor>()
      .HasMany(m => m.Movies)
      .WithMany(a => a.Actors)
      .UsingEntity(j => j
        .HasData(
            new { ActorsId = 1, MoviesId = 1 },
            new { ActorsId = 1, MoviesId = 2 } ));
}

This worked for me.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1