Una delle regole d'oro di EF Core è quella di non fare nulla che non sia stato esplicitato dallo sviluppatore. Un tipico caso in cui questa regola si applica è nelle query che recuperano un grafo di oggetti. Per fare un esempio, se vogliamo recuperare un ordine e i suoi dettagli, dobbiamo utilizzare il metodo Include per aggiungere i dettagli, altrimenti la query recupera solo l'ordine.
// recupera solo l'ordine ctx.Orders.First(c => c.Id == 1); // recupera ordine e dettagli ctx.Orders.Include(c => c.Details).First(c => c.Id == 1);
Tuttavia, esistono casi in cui vogliamo che quando recuperiamo una determinata entity, vengano recuperate in automatico anche una o più entity collegate. Nel nostro caso, potremmo dover recuperare i dettagli ogni volta recuperiamo un ordine. Aggiungere una chiamata a Include in ogni query è si fattibile, ma estremamente complesso nella sua realizzazione e manutenzione.
Per semplificare questi scenari, EF Core 6 introduce un nuovo metodo disponibile in fase di configurazione dell'entity: AutoInclude. Questo metodo si applica a una proprietà di navigazione e specifica che questa deve essere recuperata ogni qualvolta l'entity principale viene letta.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>().Navigation(c => c.Details).AutoInclude();
}Grazie a questa configurazione, la prossima query recupera sia l'ordine che i suoi dettagli.
// recupera l'ordine e i dettagli ctx.Orders.First(c => c.Id == 1);
Se in determinate query vogliamo disabilitare il comportamento automatico, possiamo farlo usando l'extension method IgnoreAutoIncludes.
ctx.Order .IgnoreAutoIncludes() .First(c => c.Id);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Azure SQL Database per dev: tutte le novità da non perdere
Pubblicare un MCP Server in GitHub MCP Registry
Centralizzare e governare MCP server e Skill con Azure API Center
Definire il metodo di rilascio in .NET Aspire
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Referenziare un package NuGet in una file based app .NET
Keynote .NET Conference Italia 2025
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
Canary release con .NET Aspire
Blazor e Static Web Assets in .NET 10
From Data to Insight: Exploratory Data Analysis with Python, VS Code and SQL MCP Server
Impostare il tipo di supporto dei campi Json in Entity Framework con Sql Server


