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
Evitare la compressione degli artefatti in un workflow di GitHub
Utilizzare le View Transition API di JavaScript
Referenziare un package NuGet in una file based app .NET
Gestione dei codeowners in GitHub
Interazione con ReconnectModal in Blazor
Estrarre solo alcuni file da uno zip tramite le classi del namespace System.IO.Compression
Integrare Agenti A2A in Azure API Management
Creare comandi nella dashboard .NET Aspire
Evitare il cache poisoning nei workflow di GitHub
Costruire endpoint SSE in ASP.NET Core
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
DevSecOps per .NET: dalla teoria alla pratica
I più letti di oggi
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Accedere a dati esposti con WebService con Silverlight 1.0
- Utilizzare dati in formato XML in XAML


