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
Ottenere un token di accesso per una GitHub App
Utilizzare gRPC su App Service di Azure
Ottimizzare le performance usando Span<T> e il metodo Split
Escludere alcuni file da GitHub Secret Scanning
Estrarre dati randomici da una lista di oggetti in C#
Gestire i dati con Azure Cosmos DB Data Explorer
Il nuovo controllo Range di Blazor 9
Introduzione ai web component HTML
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Utilizzare Azure Cosmos DB con i vettori
Effettuare il refresh dei dati di una QuickGrid di Blazor
I più letti di oggi
- a #RealCodeConf4 il 25 maggio a Firenze parleremo di #silverlight4. iscrizioni gratis su http://u.aspitalia.com/g9
- #HTML5 schema per avere l'intellisense su #VS2008 (anche express) http://u.aspitalia.com/ed
- Parallelizzare le chiamate HTTP con async/await e le Promise in JavaScript
- Rendere sicuro l'endpoint di HealthCheck in ASP.NET Core
- prime app per #wp7summer. vuoi fare strada con #wp7? 5 app e partecipi alla nostra nuova competition: http://aspitalia.com/yu #wp7dev
- disponibile #azure sdk 2.1, con supporto a #vs13 e nuovi tool per #vs12: https://aspit.co/ans