Caricare una navigation property on demand in Entity Framework Core

di Stefano Mostarda, in LINQ, Entity Framework,

Attualmente Entity Framework Core non supporta il LazyLoading. Tuttavia, a partire dalla versione 1.1, Entity Framework Core permette di caricare le entity collegate anche dopo aver effettuato una query. Per utilizzare questa funzionalità dobbiamo ricorrere alle API esposte dalle entry nel DbContext.

Per caricare una proprietà di tipo lista, dobbiamo recuperare l'entry e poi utilizzare il metodo Collection per ottenere il riferimento alla proprietà. Se invece si vuole caricare una proprietà che si riferisce a un oggetto singolo, si deve recuperare l'entry e poi usare il metodo Reference. Una volta ottenuto il riferimento alle proprietà (sia che siano singole o lista), dobbiamo chiamare il metodo Load come mostrato nel seguente esempio.

using (var context = new MyContext())
{
  var order = context.Orders.First(o => o.Id == 1);

  context.Entry(order)
    .Collection(b => b.Details)
    .Load();

  context.Entry(blog)
    .Reference(b => b.Customer)
    .Load();
}

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