Entity Framework Core: inclua objetos relacionados de muitos para muitos na WebAPI

Não estou muito familiarizado com o .NET framework, mas decidi experimentar o ASP.NET Core e o EF Core. Quero criar um back-end da API da Web bastante simples, mas estou tendo problemas para trabalhar com relacionamentos muitos-para-muitos.

Entendo que preciso criar uma tabela de relacionamento para as duas entidades, como no exemplo deste post:Como criar um relacionamento muitos para muitos com as versões noturnas mais recentes do EF Core?

Eu também tenho meu construtor de modelos criando o relacionamento conforme descrito aquihttp://ef.readthedocs.io/en/latest/modeling/relationships.html#many-to-many

Meu código fica assim:

no DBContext:

protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);

        builder.Entity<MovieActor>().HasKey(x => new { x.MovieId, x.ActorId});

        builder.Entity<MovieActor>()
            .HasOne(m => m.Movie)
            .WithMany(ma => ma.MovieActors)
            .HasForeignKey(m => m.MovieId);

        builder.Entity<MovieActor>()
            .HasOne(m => m.Actor)
            .WithMany(ma => ma.MovieActors)
            .HasForeignKey(a => a.ActorId);

    }

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

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


}

Modelos:

namespace Test.Models
{
    public class Movie
    {
        public int MovieId { get; set; }
        public string Title { get; set; }
        public DateTime ReleaseDate { get; set; }
        public string Code { get; set; }
        public string Path { get; set; }

        public ICollection<MovieActor> MovieActors { get; set; }
    }

    public class Actor
    {
        public int ActorId { get; set; }
        public string Name { get; set; }
        public ICollection<MovieActor> MovieActors { get; set; }
    }

    public class MovieActor
    {
        public int MovieId { get; set; }
        public Movie Movie { get; set; }

        public int ActorId { get; set; }
        public Actor Actor { get; set; }
    }
}

Isso parece estar funcionando na maior parte do tempo. Posso criar novos objetos MovieActor e adicioná-los ao banco de dados. Uma coisa que parece estranha é que os modelos Movie e Actor agora têm uma propriedade MovieActors, mas ela é sempre nula, apesar da tabela de junção ter entradas.

O que não consigo descobrir é como recuperar esses objetos relacionados nos meus controladores WebAPI. Minhas habilidades no Linq são muito fracas, então talvez eu só precise retocar isso, mas não sei por onde começar. Quando recebo um filme por ID ou uma lista de todos os filmes, gostaria que o resultado tivesse Atores relacionados em uma matriz no objeto. O mesmo acontece na outra direção, ao conseguir um ator, quero obter uma variedade de filmes.

Aqui está um dos meus métodos de controlador tentando usar esse relacionamento:

        // POST: api/Movie
    [HttpPost]
    public IActionResult PostMovie([FromBody] MovieBundle Moviebundle)
    {


        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var _movie = _context.Movies.FirstOrDefault(m => m.Code == Moviebundle.Movie.Code);
        if(_movie == null)
        {
            //Doesn't exist! add a new one
            _movie = Moviebundle.Movie;
            _context.Movies.Add(_movie);
            _context.SaveChanges();

            foreach (Actor actor in Moviebundle.actors)
            {
                //Try to look up by name
                Actor _actor = _context.Actors.FirstOrDefault(a => a.Name == actor.Name);

                //If they don't exist, add them to the DB 
                if (_actor == null)
                {
                    _context.Actors.Add(actor);
                    _context.SaveChanges();
                    _actor = actor;
                }

                //This is what I'm using to create the M-t-M relationship
                var link = new MovieActor { Actor = _actor, Movie = _movie };
                _context.MovieActor.Add(link); //This line gives an error


            }


        } else
        {
            return new StatusCodeResult(StatusCodes.Status409Conflict);
        }




        try
        {
            _context.SaveChanges();
        }
        catch (DbUpdateException)
        {
            if (MovieExists(_movie.MovieID))
            {
                return new StatusCodeResult(StatusCodes.Status409Conflict);
            }
            else
            {
                throw;
            }
        }

        return CreatedAtAction("GetMovie", new { id = _movie.MovieID }, _movie);
    }