Entity Framework 4.1 Code zuerst: Viele zu vielen mit iCollection auf nur einer Entität
-
24-10-2019 - |
Frage
Angesichts dieser Klassen wird dies (nach Konvention) zuerst EF 4.1-Code (nach Konvent) einer vielen zu viele Beziehung zwischen Seite und Tag überlassen:
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; }
}
Da ich eine Reihe anderer Klassen habe, implementieren Sie die ITaggable
Ich müsste all diese Sammlungen hinzufügen Tag
:
public class Tag
{
public virtual ICollection<Page> { get; set; }
public virtual ICollection<Post> { get; set; }
public virtual ICollection<Event> { get; set; }
...
}
Wenn ich diese Eigenschaften auslasse Tag
EF generiert eine 1-zu-Viele-Beziehung. Gibt es eine Möglichkeit, das auszulassen? ICollection<T>
an Tag
und überhaupt eine viel-zu-Viele-Beziehung bekommen?
(Anmerkung: ICollection<ITaggable>
an Tag
funktioniert nicht.)
Lösung
Sie müssen fließende Zuordnung verwenden:
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();
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow