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
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Gestire il colore CSS con HWB
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Referenziare un @layer più alto in CSS
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Utilizzare Copilot con Azure Cosmos DB
.NET Aspire per applicazioni distribuite
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Utilizzare Azure Cosmos DB con i vettori
Eseguire query in contemporanea con EF
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Generare la software bill of material (SBOM) in GitHub
I più letti di oggi
- Restituire un file per il download tramite ASP.NET Web API
- Inviare e-mail gratuitamente con SendGrid e Microsoft Azure
- Modificare un'immagine con il Nokia Imaging SDK in Windows Phone 8
- Implemetare lo swipe all'interno di una ListView nella Universal Windows Platform
- Community Champion Basta!Italia 2009 - Roma
- Web and Cloud Day 2015 Live - Online
- ASP.NET 3.5 Extensions in beta la settimana prossima
- Disponibile la fix GDR del .NET Framework 3.5 SP1
- Rilasciato Silverlight 3.0, Expression Blend 3 e la RC di Sketchflow
- Speciale Silverlight 4.0 RC e per Windows Phone 7 Series