Ho già avuto modo in un vecchio post di parlare delle potenzialità del nuovo approccio code-first introdotto da Entity Framework 6 che consente, tra le altre cose, di definire un data model completo partendo da una o più classi C# dette, per l'appunto, Entities. Una delle domande più frequenti che mi sono state fatte è quella relativa a come impostare il campo Id (o chiave primaria, o primary key) di una Entity in modo autoincrementale: in altre parole, come dire al Database di assegnare un identificativo numerico crescente ad ogni record.
Tanto MySQL quanto Microsoft SQL Server supportano in modo nativo colonne autoincrementali. Come fare in modo che il campo di una Entity venga definito in tal modo sul DB che andremo a generare?
La risposta è semplice: è sufficiente decorare la nostra proprietà con un apposito DatabaseGeneratedAttribute, specificando che si tratta di una identità generata automaticamente dal Database nel seguente modo:
1 2 3 4 5 |
public class Item { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid ID { get; set; } } |
Il campo ID sarà generato in modo autoincrementale, garantendo un ID univoco a ciascun record di tipo Item.
Felice sviluppo!