Entity Framework 4.1 Code de Première: Beaucoup à plusieurs avec ICollection sur une seule entité
-
24-10-2019 - |
Question
Compte tenu de ces classes, à l'aide EF 4.1 Code du premier, cela (par convention) l'autorisation d'un grand nombre à plusieurs rapports entre la page et Tag:
public interface ITaggable
{
ICollection<Tag> { get; set; }
}
public class Page : ITaggable
{
public virtual ICollection<Tag> { get; set; }
}
public class Tag
{
public virtual ICollection<Page> { get; set; }
}
Depuis que j'ai un tas d'autres classes, qui mettent en œuvre le ITaggable
je devrais ajouter toutes ces collections à Tag
:
public class Tag
{
public virtual ICollection<Page> { get; set; }
public virtual ICollection<Post> { get; set; }
public virtual ICollection<Event> { get; set; }
...
}
Si je quitte ces propriétés sur Tag
EF génère un 1 à-plusieurs. Est-il possible de laisser le ICollection<T>
sur Tag
et obtenir un grand nombre à-plusieurs de toute façon?
(Remarque:. ICollection<ITaggable>
sur Tag
ne fonctionne pas)
La solution
Vous devez utiliser le mappage couramment:
public interface ITaggable
{
ICollection<Tag> { get; set; }
}
public class Page : ITaggable
{
...
public virtual ICollection<Tag> Tags { get; set; }
}
public class Tag
{
...
}
public class Context : DbContext
{
public DbSet<Tag> Tags { get; set; }
public DbSet<Page> Pages { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Page>()
.HasMany(p => p.Tags)
.WithMany();
}
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow