Creare una chiave alternativa in un oggetto con Entity Framework Core

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi