2016-03-31 8 views
0

Ich habe meine Tabellen aus meinem Diagramm erzeugt:Entity Framework One-to-One-Beziehung?

Database schema Aber ich weiß nicht, warum, wird EF dieses Modell in der Origin erzeugen:

public virtual ICollection<Container> Containers { get; set; } 

Im Container Modell:

public int OriginID { get; set; } 
public virtual Origin Origin { get; set; } 

und in dem Zusammenhang:

modelBuilder.Entity<Origin>() 
      .HasMany(e => e.Containers) 
      .WithRequired(e => e.Origin) 
      .WillCascadeOnDelete(false); 

Ein Container-Objekt kann jedoch nur ein Origin-Objekt haben.

Wie kann ich die Sammlung entfernen nur eine Instanz von meinem Objekt im Ursprungsobjekt haben?

Denn eigentlich mein Restier Dienst mir Ursprüngen Abrufen Objekte mit einer Sammlung von nur einem Container.

So ist die Sammlung völlig nutzlos.

Haben Sie eine Idee?

Vielen Dank

+0

Sollte es keine Beziehung zwischen den beiden Primärschlüsseln geben? – schlonzo

Antwort

0

Weil Ursprünge gut auf eine Menge von Containern zusammenhängen könnte - sie wissen es nicht. Was Sie haben, ist eine Eins (Ursprung) für viele (Container). Angenommen, ich habe den Ursprung mit der ID 1 und den Container A mit der Ursprungs-ID 1. Was würde mich daran hindern, Container B mit der gleichen Ursprungs-ID hinzuzufügen? Wenn Sie auf einer 1: 1-Beziehung bestehen, versuchen Sie, beiden Modellen Schlüssel hinzuzufügen - der Ursprung sollte wissen, dass er nur mit dem einen Container verwandt ist und umgekehrt.

TD; DR: Fügen Sie ContainerID zur Origin-Tabelle hinzu.

+0

Nun, meine Ursprungstabelle kann entweder einen nullbaren "Container" oder einen nullbaren "Fluss" haben. Aber nur einer. Deshalb brauche ich ein 1-1, um meine Daten einfach abrufen zu können. Tatsächlich was ich bekomme ist: { "ID": 1, "fließt": [ ], "Container": [ { "ID": 1, "Name": "M3", "Breite": 0.0 , "Length": 0,0 "Höhe": 0,0 "Volume": 0,0 "ORIGINID": 1 "DestinationID": 13 "Displayname": "Mercuras" } ] } –

0

ich denke, dass der beste Weg, eine Eins-zu-Eins-Beziehung hinzuzufügen, ist ein Primärschlüssel, der auch ein Fremdschlüssel ist.

(die Ursprungs-ID sollte die Container-ID referenzieren)