Bonjour,
mon application est chargée de gérer différents types de médias (films, livres, musiques...etc). Voici comment sont organisées mes classes:
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
namespace MediaLibrary
{
    public abstract class Media { ... }
 
    public class Person
    {
        public virtual ICollection<Media> Mediagraphy { get; set; }
 
        public Person()
        {
            this.Mediagraphy = new List<Media>();
        }
    }
 
    public class Movie : Media
    {
        public virtual ICollection<Person> Actors { get; set; }
 
        public Movie()
        {
            this.Actors = new List<Person>();
        }
    }
}
Dans ma classe MediaContext:

Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace MediaLibrary
{
    public class MediaContext : DbContext
    {
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder
                .Entity<Movie>()
                .HasMany(m => m.Actors)
                .WithMany(a => a.Mediagraphy)
                .Map(ma =>
                    {
                        ma.ToTable("MoviesActors");
                        ma.MapLeftKey("MovieID");
                        ma.MapRightKey("ActorID");
                    });
        }
    }
}
Donc plutôt que de créer dans la classe Person des ICollection pour chaque type de média, j'ai créé une ICollection<Media> (vu que tous les médias en héritent).
Cependant, dans le modelbuilder, a.mediagraphy est souligné en rouge avec l'erreur:
Cannot implicitely convert type 'System.Collection.Generic.ICollection<MediaLibrary.Media>' to 'System.Collection.Generic.ICollection<MediaLibrary.Movie>'
Alors que je peux très bien ajouter un Movie dans une ICollection<Media> ....
Comment régler ceci ?