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
Disabilitare le run concorrenti di una pipeline di Azure DevOps
DevSecOps per .NET: dalla teoria alla pratica
Abilitare .NET 10 su Azure App Service e Azure Functions
Gestione degli eventi nei Web component HTML
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Supportare la sessione affinity di Azure App Service con Application Gateway
Integrare OpenAI tramite Aspire
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Impostare automaticamente l'altezza del font tramite CSS
Recuperare le subissue e il loro stato di completamento in GitHub
Integrare modelli AI in un workflow di GitHub
Controllare la velocità di spostamento su una pagina HTML
I più letti di oggi
- Inserire le news di Punto Informatico nel proprio sito
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Sfruttare una CDN con i bundle di ASP.NET
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Gli oggetti CallOut di Expression Blend 4.0


