Quando creiamo l'object model di un sistema, spesso le chiavi delle entity sono delle chiavi surrogate come un guid o un numero progressivo. Tuttavia, molto spesso le entity hanno anche una chiave naturale che permette di identificare l'oggetto univocamente. Per fare un esempio, possiamo avere un'entity Persona con la proprietà Id che rappresenta la chiave surrogata e una proprietà CodiceFiscale che rappresenta la chiave naturale in grado di identificare univocamente la persona.
Entity Framework Core permette di specificare sia la chiave primaria che eventuali chiavi naturali (chiamate alternative) sia tramite convenzione che tramite codice. Tuttavia, in questo script parleremo solo del mapping via codice, della convenzione ci occuperemo in un prossimo script. Il metodo da usare per mappare una chiave alternativa è visibile nell'esempio.
class MyContext : DbContext { public DbSet<Person> People { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Person>() .HasAlternateKey(c => c.Code); } } class Person{ public int Id { get; set; } public string Name { get; set; } public string BirthDate { get; set; } public string Code { get; set; } }
In questo esempio, tramite convenzione la proprietà Id è la chiave primaria, e tramite codice la proprietà Code è la chiave alternativa.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Verificare la provenienza di un commit tramite le GitHub Actions
Sfruttare al massimo i topic space di Event Grid MQTT
Effettuare delete massive con Entity Framework Core 7
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Migrare una service connection a workload identity federation in Azure DevOps
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Utilizzare politiche di resiliency con Azure Container App
Implementare il throttling in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Utilizzare database e servizi con gli add-on di Container App
Autenticarsi in modo sicuro su Azure tramite GitHub Actions