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:
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
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>(); } } }
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).
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"); }); } } }
Cependant, dans le modelbuilder, a.mediagraphy est souligné en rouge avec l'erreur:
Alors que je peux très bien ajouter un Movie dans une ICollection<Media> ....Cannot implicitely convert type 'System.Collection.Generic.ICollection<MediaLibrary.Media>' to 'System.Collection.Generic.ICollection<MediaLibrary.Movie>'
Comment régler ceci ?
Partager