Una delle operazioni più comuni quando si lavora con un database relazionale è quela di creare view per semplificare la scrittura delle query. Queste view non hanno sempre una chiave primaria e quindi Entity Framework Core non è in grado di identificare singolarmente ogni riga dei dati recuperati con una query. Per questo motivo, fino ad Entity Framework Core 2.0, non era possibile effettuare query sulle view senza chiave primaria. In Entity Framework Core 2.1 è stata aggiunta questa possibilità attraverso la nuova classe DbQuery<T>. Questa classe svolge lo stesso compito di DbSet<T> con la differenza di gestire entity senza chiave primaria. Nel prossimo esempio vediamo come creare le entity e configurarle nel contesto
public class MyContext { public DbSet<Person> People { get; set; } public DbQuery<PersonView> PeopleView { get; set; } } public class Person { public int Id { get; set; } //altre proprietà } public class PersonView { public string FullName { get; set; } public string FullAddress { get; set; } }
Una volta create entity e contesto, possiamo eseguire query sul DbQuery esattamente come fatto su DbSet. Infatti entrambe le classi usano lo stesso provider di traduzione SQL. La sola differenza è che gli oggetti restituiti da DbQuery non entreranno a far parte del change tracker del contesto in quato non hanno un identificativo univoco.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare il trigger SQL con le Azure Function
Utilizzare i primary constructor in C#
Generare file PDF da Blazor WebAssembly con iText
Evitare la script injection nelle GitHub Actions
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Elencare le container images installate in un cluster di Kubernetes
Evitare il flickering dei componenti nel prerender di Blazor 8
Utilizzare Tailwind CSS all'interno di React: installazione
Eseguire una query su SQL Azure tramite un workflow di GitHub
Gestire liste di tipi semplici con Entity Framework Core
Assegnare un valore di default a un parametro di una lambda in C#
I più letti di oggi
- Riordinare le righe di una GridView di ASP.NET con jQuery
- Creazione di un alarm con suono personalizzato con Windows Phone 7.1
- Utilizzare la session affinity con Azure Container Apps
- Blue-green deployment con Azure Web App e DevOps
- Ed infine anche il calendario :)
- Configurare la diagnostica di Azure attraverso Visual Studio
- Recuperare la data di creazione di un tag tramite una pipeline YAML di Azure DevOps
- Microsoft Security Bulletin MS05-002
- .NET Core e dispositivi IoT
- Eseguire attività pianificate con Azure Container Jobs