Entity Framework 2.1 ha introdotto il concetto di query type. Un query type è un oggetto mappato verso un oggetto del database privo di chiave primaria. Dato che non esiste una chiave primaria che identifica univocamente un record, quest'oggetto può solo essere letto dal database e non può essere persistito. Il mapping di questi oggeti è diverso dal mapping delle entity e il modo di esporre questi oggetti da parte del DbContext cambia inquanto non usiamo DbSet ma DbQuery.
Entity Framework Core 3 non ha più il concetto di query type, ma dei keyless entity type. Un keyless entity type è a tutti gli effetti un'entity ma senza chiave primaria. Con questo cambiamento, il mapping tra una normale enttity e una entity senza chiave è praticamente lo stesso. L'unica differenza consiste nel fatto che dobbiamo usare il metodo HasNoKey in fase di mapping per specificare che il tipo non ha una chiave primaria.
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<KeylessEntity>(entity => { entity.HasNoKey(); }); }
Essendo a tutti gli effetti una entity, questa viene esposta dal DbContext come DbSet. Grazie a questi cambiamenti, una entity con chiave e una entity senza chiave sono trattate praticamente allo stesso modo unificando così le API. Questo significa però che c'è un breaking change rispetto alle versioni precedenti di Entity Framework Core in quando, ad esempio, il tipo DbQuery non esiste più.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione file Javascript in Blazor con .NET 9
Effettuare il refresh dei dati di una QuickGrid di Blazor
Ottimizzare le performance usando Span<T> e il metodo Split
Loggare le query più lente con Entity Framework
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Escludere alcuni file da GitHub Secret Scanning
Gestione CSS in Blazor con .NET 9
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Utilizzare QuickGrid di Blazor con Entity Framework
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Utilizzare WhenEach per processare i risultati di una lista di task