ENTITY FRAMEWORK CORE
CREARE DELLE QUERY LINQ
Linq è l’altra tecnologia che useremo per interrogare il database e ottenere indietro le informazioni sui corsi. Linq non invia query SQL, abbiamo a disposizione dei veri e propri metodi C# che ci consentiranno di selezionare, filtrare, ordinare dei dati. Linq ci permette di interrogare una qualsiasi fonte dati.
Vediamo l’interfaccia IEnumerable<T>.
Il requisito minimo per usare Linq è che la classe implementi l’accesso sequenziale con IEnumerable<T>. Partiamo con Where, che è un extension Method in grado di filtrare un elenco di elementi che riceve in input. Produce un altro elenco che contiene o tutti gli elementi, o alcuni oppure nessuno. Ciò dipende dal fatto che questi elementi soddisfino un certo criterio, noi il criterio lo forniamo attraverso delle lambda expression.
La List<Apple> in input non viene alterata da Where in quanto viene letta solo sequenzialmente. In base alla lambda impostata in output finiscono le sole mele rosse. Vediamo come funziona Where e Select in combinazione.
La prima lambda estrae le mele rosse, la seconda una collezioni di pesi delle mele rosse che arrivano a Select.
Vediamo la differenza sulla leggibilità del codice quando usiamo Linq.
INIZIARE CON ENTITY FRAMEWORK CORE
Si ottiene da NuGet come pacchetto e anche lui è basato su provider. Chi produce il provider deve convertire le query Linq nella specifica tecnologia di database. Avremo a che fare con due classi, DbContext e DbSet. I punti interrogativi rimasti sconosciuti sino adesso sono rappresentati dalla classe DbSet<T>.
Il DbSet<T> è un set cioè un insieme di elementi che arrivano da un database. T indica il tipo di questi elementi, quindi se vogliamo essere in grado di interrogare i corsi che abbiamo nel database, avremmo un DbSet<Course> dove Course rappresenta una nuova classe che ci andremo a creare e le cui proprietà rappresentano le colonne della tabella Courses. DbSet<T> è un oggetto connesso, quindi possiamo rivolgergli le nostre query Linq come da immagine. Quello che farà EF Core è quello di trasformare la query Linq in istruzioni SQL.
Si potrebbe pensare che nel momento in cui si invoca il metodo Add o Remove oppure Delete EF Core esegua tale operazione immediatamente. In realtà come vedremo non è così. Vediamo il DbContext.
Le classi di entità fanno parte del cosiddetto modello concettuale, che è l’insieme di tutte queste classi di entità a cui possiamo rivolgere query Linq. Per configurazione si intende fornire al DbContext la ConnectionString per collegarsi al database, con il mapping andiamo ad indicare le proprietà che ciascuna di queste classi di entità mappa sulle tabelle del database.
Scrivi un commento