2012-11-29 6 views
7

ich definiere einige meiner Modelle atm mit EF5 Code First. Ich habe diese drei Beispielklassen mit einer Viele-zu-viele-Beziehung:Viele-zu-viele Beziehungen in Breeze

public class Team 
    { 
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Team_Id { get; set; } 
     [MaxLength(150)] 
     public string TeamName { get; set; } 

     public virtual ICollection<User> Users { get; set; } 
     [public virtual ICollection<Role> Roles { get; set; } // 1 

     [Timestamp] 
     public byte[] TimeStamp { get; set; } 
    } 

public class User 
    { 
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int User_Id { get; set; } 
     [MaxLength(150)] 
     public string LoginName { get; set; } 
     [MaxLength(150)] 
     public string Nachname { get; set; } 
     [MaxLength(150)]   
     public string Vorname { get; set; } 

     public virtual ICollection<Team> Teams { get; set; } 
     public virtual ICollection<Role> Roles { get; set; } // 2 

     [Timestamp] 
     public byte[] TimeStamp { get; set; } 
    } 

public class Role 
    { 
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public int Role_Id { get; set; } 
     [MaxLength(50)] 
     public string RoleName { get; set; } 

     [Timestamp] 
     public byte[] TimeStamp { get; set; } 
    } 

Wie Sie gibt es eine viele-zu-viele-Beziehung zwischen den Teams und Benutzer sehen können. Ich versuche, dies stundenlang zur Arbeit zu bringen. Ich bekomme immer eine JS Ausnahme mit der Fehlermeldung "Bad Nav Eigenschaften" in VS 2012. Bei zuerst dachte ich, es war die ICollections Teams/Benutzer in Benutzer/Teams-Klasse, aber es warnt nicht. Das Problem scheint die beiden Aufrufe 1) und 2) zu sein. Wenn ich einen von ihnen entferne, funktioniert es. Das Umbenennen von eins und das Beibehalten beider Felder weiterhin wirft den Fehler. Vielleicht hat jemand eine Idee was los ist.

Vielen Dank

Diese Frage wurde von SirSmackalot auf unsere Ideablade Foren gepostet. Ich wiederhole die Frage und antworte hier, da ich denke, dass es für die Breeze Stack Overflow-Community nützlich sein wird.

Antwort

14

Breeze unterstützt noch keine Viele-zu-Viele-Beziehungen, bei denen die Zuordnungstabelle ausgeblendet ist. Das Problem ist, dass Breeze von einem "Fremdschlüssel" -Konzept zum Verfolgen von Beziehungen abhängt, und dies ist nicht für Viele-zu-Viele-Beziehungen verfügbar, die im Entity Framework ohne Nutzlast definiert sind.

Worin besteht die Arbeit darin, die Viele-zu-Viele-Beziehung in zwei 1: n-Beziehungen mit einer verknüpfenden Entität zu ändern. Stellen Sie die Zuordnungstabelle im Grunde nur als einen anderen Entitätstyp zur Verfügung. Zum Beispiel:

Team - TeamUser (1-to-many)

Benutzer - TeamUser (1-to-many)

Wir planen Entity Framework offiziellen many-to-many unterstützen Beziehung in einer späteren Version, aber wir müssen dies priorisieren. Bitte fügen Sie diese Feature-Anfrage hinzu oder stimmen Sie über den Feedback-Mechanismus auf der Website ab (https://breezejs.uservoice.com/forums/173093-breeze-feature-suggestions/filters/top). Dies hilft uns zu entscheiden, auf welche Funktionen wir uns als nächstes konzentrieren sollen.

+7

Ich rate Menschen zu viele-zu-viele Implementierungen zu vermeiden. Das Konzept ist in Ordnung, aber in der Praxis fällt es fast immer auseinander. Nach meiner Erfahrung erwirbt die Zuordnungstabelle schließlich eine Spalte. Vielleicht ist es ein Link-Datum oder eine userId oder eine andere Tatsache, die beschreibt, wie die beiden Seiten zusammen kamen. In dem Moment, in dem ich diese "Nutzlast" hinzufüge, fällt das Many-to-Many auseinander und ich muss die Mapping/Linking-Entity explizit machen. Ich muss versuchen, den ganzen Code aufzuspüren, der von m-to-m ... Code abhängt, der schwer zu finden ist. Ich wünschte immer, ich hätte sie überhaupt zu einer 1-zu-m + -Kartierungseinheit gemacht. – Ward

+0

Wie würde eine Abfrage in breeze mit einer solchen verknüpfenden Entität aussehen, um alle Benutzer aus einem Team zu erhalten? – daniel

+3

Immer noch nichts dabei? – Adaptabi