ENTITY FRAMEWORK CORE
A COSA SERVE UN ORM COME ENTITY FRAMEWORK CORE
Nel corso degli anni sono state introdotte nuove tecnologie come gli ORM ed Entity Framework Core è uno di essi. Non sono tecnologie alternative ad ADO.NET ma sono basate su ADO.NET, operando a un livello leggermente più alto. Ci consentono delle agevolazioni, come ad esempio lavorare con un modello ad oggetti, interrogando i nostri dati con query fortemente tipizzate. Gli ORM dato che lavorano ad un livello più alto introducono un piccolo costo di prestazione, se il nostro sito ha migliaia di utenti e non vogliamo introdurre costi di prestazioni, lavorare con ADO.NET è un’opzione più che valida.
Per il momento non diciamo nulla sull’oggetto rappresentato dai punti interrogativi, a differenza di ADO.NET in cui inseriamo una stringa da inviare come comando al database, e quindi soggetta ad errori di digitazione, con un ORM come si vede è praticamente impossibile commettere degli errori di digitazione, perché se sbagliamo a digitare qualcosa l’editor ce lo segnala immediatamente e non a Runtime in quanto si tratta di metodi e proprietà di C#.
Tutto questo viene passato dal servizio applicativo al servizio infrastrutturale.
L’ORM è in grado di convertire tutto questo in una query SQL, perché del resto abbiamo pur sempre un database relazionale dall’altra parte.
La query poi viene inviata al database che ci restituisce i dati in formato tabellare, trasformati dall’ORM in un grafo di oggetti.
Poi tutto questo grafo di oggetti lo passa indietro al servizio applicativo. Un ORM riesce a fare il mapping tra il mondo relazionale e quello ad oggetti da qui la definizione di Object Relational Mapper (ORM).
Vediamo quali sono i vantaggi e gli svantaggi.
Prima di svelare i punti interrogativi, facciamo un po’ di pratica.
COMPRENDERE E USARE LE LAMBDA EXPRESSION
Il linguaggio C# è un linguaggio orientato agli oggetti, tuttavia il linguaggio stesso presenta dei tratti che sono puramente funzionali, come ad esempio le lambda expression. Esse sono essenzialmente funzioni che possiamo assegnare a una variabile proprio come assegneremo qualsiasi altro tipo di dato, un intero una stringa etc. Una lambda come qualsiasi altro oggetto può essere passata come argomento nell’invocare un’altra funzione.
La terza espressione contiene della logica e per favorirne il riutilizzo la possiamo incapsulare in una funzione/metodo.
Vediamo l’utilizzo di una lambda expression.
L’espressione è un’assegnazione, tutto quello che sta a destra del simbolo uguale deve essere ricondotto a una Func<DateTime, bool>. Questo significa che la funzione accetta un DateTime come parametro (dob = data di nascita) e restituisce un valore booleano. A sinistra dell’operatore lambda => abbiamo l’elenco dei parametri che accetta la funzione, a destra il corpo della funzione. Viene anche chiamata funzione anonima perché come vedi non c’è traccia del suo nome. La possiamo anche ricondurre alla seguente espressione.
Le parentesi tonde sono opzionali con un parametro ma diventano obbligatorie se abbiamo zero o più di un parametro. Vediamo un’altra funzione che introduce l’età legale per poter guidare e che può variare da stato a stato.
Questa funzione lambda accetta due parametri il primo di tipo DateTime il secondo un int e restituisce un valore booleano.
Si possono avere fino a otto parametri. E per funzioni che non restituiscono nulla? Ci sono le Action che sono lambda che restituiscono void.
Da ricordare:
Scrivi un commento