loading experience

Entity Framework Core

EF Core 10: LeftJoin, filtri con nome e ricerca vettoriale

Le novità più utili di Entity Framework Core 10 per il lavoro di tutti i giorni.

EF Core 10: LeftJoin, filtri con nome e ricerca vettoriale

Entity Framework Core 10 accompagna .NET 10 come versione a supporto lungo. Ecco le novità che semplificano di più il codice quotidiano.

Ogni filtro ha un nome e si può disattivare da solo, lasciando attivi gli altri.
Ogni filtro ha un nome e si può disattivare da solo, lasciando attivi gli altri.

LeftJoin e RightJoin

Una left join in LINQ richiedeva una combinazione poco leggibile di GroupJoin, SelectMany e DefaultIfEmpty. Ora c'è un operatore dedicato:

var righe = await db.Clienti
    .LeftJoin(db.Ordini,
        c => c.Id,
        o => o.ClienteId,
        (c, o) => new { c.Nome, Totale = o == null ? 0 : o.Totale })
    .ToListAsync();

Filtri di query con nome

I filtri globali (per esempio "solo righe non eliminate" o "solo il tenant corrente") ora possono essere più di uno per entità e avere un nome, così si può disattivarne uno solo:

modelBuilder.Entity<Documento>()
    .HasQueryFilter("NonEliminati", d => !d.Eliminato)
    .HasQueryFilter("Tenant", d => d.TenantId == _tenantId);

// cestino: mostra anche gli eliminati, ma sempre solo del tenant corrente
var cestino = await db.Documenti
    .IgnoreQueryFilters(["NonEliminati"])
    .Where(d => d.Eliminato)
    .ToListAsync();

Ricerca vettoriale

Con SQL Server 2025 e Azure SQL, EF Core 10 supporta il tipo vettoriale e la funzione di distanza: si possono salvare gli embedding generati da un modello di IA e cercare i documenti più simili direttamente con LINQ, senza un database separato. È la base per funzioni di ricerca semantica e per i sistemi che arricchiscono le risposte di un modello linguistico con i documenti aziendali.

Altre migliorie

  • Supporto al tipo JSON nativo delle versioni recenti di SQL Server.
  • Tipi complessi più flessibili, anche facoltativi e mappati su colonne JSON.
  • ExecuteUpdateAsync più semplice da comporre con logica condizionale.
Commenti (0)

Nessun commento ancora.

Lascia un commento