Verletzung der PRIMARY KEY-Einschränkung in Entity Framework code first-link-Tabelle

Ich habe eine Tabelle User und eine Rollen-Tabelle. Dort ist eine automatisch generierte UsersRoles link-Tabelle enthält die Id aus der User-und Rollen-Tabellen. Dieser generiert mit dem folgenden code:

modelBuilder.Entity<User>()
                .HasMany(u => u.Roles)
                .WithMany(r => r.Users)
                .Map(c => { 
                    c.MapLeftKey("UserId");
                    c.MapRightKey("RoleId");
                    c.ToTable("UsersRoles");
                });

Wenn ich versuche, fügen Sie eine unabhängige Person, und rufen Sie Context.SaveChanges() ich die folgende Fehlermeldung:

Verletzung der PRIMARY KEY-Einschränkung 'PK_UsersRoles'. Kann nicht einfügen
doppelten Schlüssel im Objekt 'dbo.UsersRoles'. Der doppelte Schlüsselwert ist
(2beaf837-9034-4376-9510-b1609c54efbe,
dcd16d00-d46e-4d48-8328-3e7b35b11ccf). Die Anweisung wurde
beendet.

Ich habe die Conext.ChangeTracker.Entries() für die Elemente, die in der Fehlermeldung genannten und die Entity-Zustand markiert ist, als Unverändert.

Die einzige Person, der markiert ist als die neue Platte, die ich bin versucht hinzuzufügen, alles andere ist markiert als Unverändert.

Code für das hinzufügen der Einheit:

 RoleGroup group = Context.RoleGroups.Create();
 group.Title = roleGroupName;
 Context.Set<RoleGroup>().Add(group);
 Context.SaveChanges();

Weiß jemand, warum dies passiert ist?

  • Sollten Sie nach dem code, fügt hinzu, dass die Person, die den Kontext
  • Können Sie genau das zeigen, was Sie geprüft haben? Ich vermute, Sie haben nur bestätigt, dass die Role und User Einheiten sind unverändert.
  • Vielen Dank für die Fragen, ich habe aktualisiert mein Frage etwas mehr Informationen. Hoffentlich das hilft.
  • Meinst du Context.Set<RoleGroup>().Add(group);?
  • Da ist zunächst die UsersRoles Tisch, aber dann das snippet bezieht sich auf RoleGroup. Ich auf jeden Fall vermisse hier etwas.
  • ja, das ist es, was ich meine. Wird jetzt das update, danke.
  • Zychla die UsersRoles Tabelle ist ein link-Tabelle automatisch generiert. Die RoleGroup nichts, das ist, wo bekomme ich die Fehlermeldung Sie versuchen, um eine RoleGroup.
  • Ich noch nicht bekommen. Wie kann das hinzufügen einer RoleGroup Ursache der Verletzung der primary key in einer unabhängigen UserRoles-Tabelle?
  • Das ist, warum ich bin mit der Frage.
  • Wahrscheinlich ist dies NICHT die gezeigten Codeausschnitt, der das Problem verursacht.

InformationsquelleAutor 97ldave | 2013-07-04
Schreibe einen Kommentar