EF code first: relation & héritage
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:
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:
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:
Citation:
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 ?