È possibile incrementare automaticamente una proprietà che non è la chiave primaria in Entity Framework? Quello che ho è una classe che ha un ID, ma anche un numero di serie:Proprietà incremento automatico non chiave
public class Maintenance
{
[Key]
public int ID { get; set; }
public int GroupID { get; set; }
public int SerialNo { get; set; }
}
Ho un indice su GroupID
e SerialNo
con un rapporto unico, rendendo impossibile per un gruppo per avere lo stesso numero di serie due volte .
Quello che sto facendo attualmente è controllare .Max()
per SerialNo
all'interno di quel gruppo. Mi piacerebbe comunque se il numero di serie fosse auto incrementato. È possibile?
Sono stato alla ricerca di una soluzione, ma per quanto ho capito, non è possibile avere 2 colonne autoincrementanti con quadro entità e che la colonna autoincremento sarà sempre la colonna PK.
C'è un modo per impostare l'incremento automatico oppure esiste una soluzione migliore del problema rispetto all'utilizzo di Max()
? L'utilizzo di Max()
potrebbe teoricamente produrre 2 valori identici e provocherà l'arresto anomalo del programma durante il tentativo di inserimento (a causa dell'indice univoco).
Sto usando il codice prima.
Per chiarire: Voglio mantenere l'ID come chiave primaria e calcolare il numero di serie durante l'inserimento.
UPDATE:
Ho provato con [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
su SerialNo
che si traduce in Entity Framework voler cambiare la chiave primaria a questa proprietà. Ho anche provato [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
, che tenta di inserire NULL nella colonna SerialNo
e [DatabaseGenerated(DatabaseGeneratedOption.None)]
che tenta di inserire 0, in pratica facendo 'nulla'.
informazioni richieste:
Questo è un esempio di come la tabella potrebbe apparire:
|_ID_|_GroupID_|_SerialNo_|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 1 | 3 |
| 5 | 2 | 2 |
Hai trovato una soluzione a questo? Ho la stessa domanda/problema ... – Mike
No, scusami @Mike non l'ho fatto. Sto ancora usando '.Max()' –