Mysql
 sql >> Database >  >> RDS >> Mysql

più entità aggiunte possono avere la stessa chiave primaria sul seme del database

Nella tua modifica, menzioni "Più entità aggiunte potrebbero avere la stessa chiave primaria". errore. Senza conoscere tutti i dettagli di ciò che stai facendo qui, sembra che tu stia creando una relazione con un'entità - di cui ce ne sono due nel contesto con lo stesso ID. Queste sono probabilmente nuove entità che non sono state ancora salvate ed è qui che ottengono un ID generato automaticamente dal database. Se la relazione si basa sull'ID, c'è qualche ambiguità perché Entity Framework non è in grado di determinare a quale delle nuove entità punta effettivamente la relazione:entrambe hanno l'ID a cui punta la relazione.

Ci sono due potenziali soluzioni.

  1. Genera un identificatore univoco temporaneo per le entità man mano che vengono create nel contesto. Entity Framework lo scarterà quando l'entità viene salvata, ma fino a quel momento può utilizzarla per distinguere una nuova entità dall'altra. Ho usato numeri interi negativi per questo scopo in passato.

  2. Non creare le relazioni utilizzando gli ID ma piuttosto i riferimenti di entità. Se Entity Framework ha un riferimento diretto all'entità, non è necessario che attraversi il processo di identificazione dell'entità sulla base di identificatori non univoci e non dovrebbe avere questo problema.