Tengo dos modelos en mi proyecto. primero para Película y segundo para Género. Hay una relación de muchos a muchos entre los dos. Así que creé otro modelo llamado MovieGenre. El problema es que no sé cómo implementar una función de búsqueda en el controlador para el nombre del Género. Para recuperar una película con el nombre de género especificado me refiero.
Aquí están los tres modelos.
public class Movie { public int Id { get; set; } public string Name { get; set; } public List<MovieGenre> MovieGenres { get; set; } public string Director { get; set; } public DateTime ReleaseDate { get; set; } = DateTime.Now; } public class Genre { public int Id { get; set; } public string Name { get; set; } public List<MovieGenre> MovieGenres { get; set; } } public class MovieGenre { public int MovieId { get; set; } public int GenreId { get; set; } public Movie Movie { get; set; } public Genre Genre { get; set; } }Esta consulta no tiene nada con Include sino cómo implementar el filtro
var result = ctx.Movie .Where(m => m.MovieGenres.Any(mg => mg.Genre.Name == genreName)) .ToList();Si está utilizando EF Core 5+, considere simplificar su modelo. La entidad intermedia se puede omitir/ocultar, consulte la documentación :
public class Movie { public int Id { get; set; } public string Name { get; set; } public List<Genre> Genres { get; set; } public string Director { get; set; } public DateTime ReleaseDate { get; set; } = DateTime.Now; } public class Genre { public int Id { get; set; } public string Name { get; set; } public List<Movie> Movies { get; set; } } var result = ctx.Movie .Where(m => m.Genres.Any(g => g.Name == genreName)) .ToList();