Ho una tabella utente e una tabella ruoli. Esiste una tabella di collegamenti UsersRoles generata automaticamente che contiene l'Id delle tabelle Utente e Ruoli. Questo viene generato utilizzando il seguente codice:Violazione del vincolo PRIMARY KEY nella tabella di collegamento del primo codice Entity Framework
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithMany(r => r.Users)
.Map(c => {
c.MapLeftKey("UserId");
c.MapRightKey("RoleId");
c.ToTable("UsersRoles");
});
Quando cerco di aggiungere un'entità estranea e chiamare Context.SaveChanges()
ricevo il seguente errore:
Violation of PRIMARY KEY constraint 'PK_UsersRoles'. Cannot insert duplicate key in object 'dbo.UsersRoles'. The duplicate key value is (2beaf837-9034-4376-9510-b1609c54efbe, dcd16d00-d46e-4d48-8328-3e7b35b11ccf). The statement has been terminated.
Ho controllato il Conext.ChangeTracker.Entries()
per gli elementi di cui al l'errore e lo stato dell'entità sono contrassegnati come invariato.
L'unica entità contrassegnata come aggiunta è il nuovo record che sto tentando di aggiungere, tutto il resto è contrassegnato come Invariato.
codice per l'aggiunta di Entity:
RoleGroup group = Context.RoleGroups.Create();
group.Title = roleGroupName;
Context.Set<RoleGroup>().Add(group);
Context.SaveChanges();
Qualcuno sa perché questo sta accadendo?
Dovresti pubblicare il codice che aggiunge l'entità al contesto – ken2k
Puoi mostrare * esattamente * quello che hai controllato? Ho il sospetto che tu abbia verificato solo che le entità 'Role' e' User' non siano cambiate. – hvd
Grazie per le domande, ho aggiornato la mia domanda per aggiungere ulteriori informazioni. Speriamo che questo aiuti. – 97ldave