Entity Framework, das Datensätze in viele bis viele Mapping-Tabellen hinzufügt

9

Ich habe 3 Tische,

1) Kunde (ID, Name, bla bla)

2) Kundengruppen (GroupId, GroupName)

3) CustomerInGroups (CustomerId, GroupId)

%Vor%

Wie füge ich einen Datensatz in CustomerInGroups hinzu? EntityFramework generiert keine Entitäten für solche Viele-zu-Viele-Zuordnungstabellen

Bearbeiten:

Beide ID-Spalten in Kunden- und Kundengruppen sind auf automatisches Inkrement gesetzt.

Also in meiner CustomersGroup-Tabelle habe ich

%Vor%

Ich habe versucht, dies als eines der vorgeschlagenen Poster zu tun:

%Vor%

Wenn ich dies jedoch getan habe, anstatt einen Datensatz in der Mapping-Tabelle wie folgt zu erstellen:

%Vor%

Was ich bekam, war

%Vor%

Es hat tatsächlich einen anderen Eintrag in meiner CustomerGroups-Tabelle erstellt, was ich nicht möchte

    
Null Reference 07.03.2013, 04:16
quelle

3 Antworten

7

Fliegen ein wenig blind, da Sie nicht die Eigenschaften entity enthalten haben. Aber Sie sollten eine Eigenschaft für die Beziehung zu CustomerGroups haben. Setzen Sie diese Eigenschaft nur auf die Gruppen, mit denen Sie in Beziehung stehen möchten. Beispielsweise würde dies einen neuen Gruppennamen "foo bar" erstellen und die Entität mit dieser Gruppe verknüpfen.

%Vor%

Wenn die Beziehung korrekt eingerichtet ist, fügt EF automatisch einen Datensatz in CustomerGroups ein und fügt eine Beziehung in die Tabelle CustomerInGroups ein.

BEARBEITEN:

Wenn Sie versuchen, einem neuen Kunden ein vorhandenes CustomerGroup hinzuzufügen. Sie möchten das CustomerGroup zuerst aus der Datenbank abrufen und es dann der Entität Kunde hinzufügen, die Sie einfügen.

%Vor%     
Steven V 07.03.2013, 04:22
quelle
2

Wenn Sie versuchen, einen bestehenden Kunden einer _existierenden Gruppe zuzuweisen und davon auszugehen, dass das CustomerGroup-Objekt eine ICollection verfügbar macht, gehen Sie folgendermaßen vor:

%Vor%

Die Methode Find () ist die Methode des Entity Framework Code First (DbContext), die nach der ID sucht. Ich kann mich nicht an die Spitze meines Kopfes erinnern die "richtige" ObjectContext Art und Weise es zu tun, aber aber. Single (g = & gt; g.Id == 2) würde auch funktionieren.

Idealerweise geben Sie uns eine bessere Vorstellung davon, wie Ihre Entitäten zugeordnet sind, damit wir wissen, wie Sie Ihre Entitäten in Beziehung setzen.

    
Daniel 07.03.2013 10:16
quelle
1

Zusätzlich zur Antwort von @ Steven-v: Wenn Sie zuvor Kundengruppen abgerufen haben und sie nicht mehr aus db abrufen möchten, können Sie sie auch einfach an den Kontext anhängen.

%Vor%     
mesut 10.06.2015 15:45
quelle