Question

Je veux construire une relation comme celui-ci (une zone est dans le voisinage de x autres zones)

public class Zone
{
    public string Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<ZoneNeighourhood> ZoneNeighourhoods { get; set; }
}

public class ZoneNeighbourhood
{
    public virtual Zone Zone1 { get; set; }
    public virtual Zone Zone2 { get; set; }
}

Malheureusement, cela ne fonctionnera pas, parce que les FKs générés par EF ne sont pas correctes ... Comment puis-je obtenir une structure comme celui-ci au travail?

Exemple avec 3 zones: Zone 1, Zone 2, Zone 3

Zone 1 Neighours:

Zone 2, Zone 3

Zone 2 Neighbors:

Zone 1

Zone 3 Neighbors:

Zone1

Un conseil?

Était-ce utile?

La solution

Votre carte est incorrect. Vous créez une entité de référencement auto si vous avez besoin collecte séparée pour les relations entrantes et sortantes. collection unique ne suffit pas.

public class Zone 
{
    public string Id { get; set; }
    public string Name { get; set; }
    [InverseProperty("NeighbourOf")]
    public virtual ICollection<Zone> NeighbourTo { get; set; }
    [InverseProperty("NeighbourTo")]
    public virtual ICollection<Zone> NeighbourOf { get; set; }
}

Vous n'avez pas besoin de carte table de jonction à moins que vous souhaitez également ajouter des propriétés supplémentaires à la relation.

Si vous ne souhaitez que seule collection, vous devez utiliser le mappage couramment:

public class Zone 
{
    public string Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Zone> Neighours { get; set; }
}

public class Context : DbContext
{
    public DbSet<Zone> Zones { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Zone>()
                    .HasMany(z => z.Neighbours)
                    .WithMany();
    }
}

Autres conseils

Dave,

Qu'en est-il juste:

public class Zone {
    public string Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Zone> Neighours { get; set; }
}

Ou suis-je manque quelque chose? Avez-vous besoin de modéliser le quartier comme une entité externe pour une autre raison? Je me demande l'entité-cadre générerait pour quelle base de données-schéma qui ... Je ne suis pas un expert, en fait, je suis un noob dans ce domaine. Je ne pense qu'il a un problème avec des tables auto-referncing comme ça ... aleast rien que je l'ai lu jusqu'à présent l'indique. ESSAYONS et savoir; -)

Vive. Keith.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top