Definire una relazione tra entity utilizzando foreign key e navigation properties con Entity Framework Core

di Stefano Mostarda, in LINQ, Entity Framework,

Nello script #412 abbiamo visto che Entity Framework Core, a differenza di Entity framework 6, è in grado di gestire le relazioni tra entity senza bisogno di proprietà che mappino direttamente verso le foreign key. Tuttavia, questo non è sempre il caso. Quando modelliamo ordini e dettagli, è normale avere nell'ordine una lista di dettagli, ma nel dettaglio potremmo anche mantenere solo l'id dell'ordine senza avere una proprietà ordine.

In questi casi il mapping della relazione va impostato come segue.

modelBuilder.Entity<Ordine>()
  .HasMany(p => p.Dettagli)
  .WithOne()
  .HasForeignKey(p => p.IdOrdine);

Il metodo HasMany specifica che un ordine ha più dettagli. Il metodo WithOne specifica che un dettaglio appartiene a un solo ordine. In questo caso non specifichiamo nulla perche nel dettaglio non abbiamo una proprietà ordine. Infine il metodo HasForeignKey specifica quale sia la proprietà nel dettaglio che fa da foreign key verso l'ordine.

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