1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer
2 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Un data access layer (DAL) è un layer di un programma (uno strato software, in OOP potrebbe essere un insieme di classi) avente il compito di semplificare laccesso ai dati contenuti in uno storage (un contenitore) di qualche tipo, come ad esempio un database relazionale In una logica MVC, permette di realizzare il disaccoppiamento tra quelli che sono i layers di un programma atti a esposizione dei dati/ controllo del flusso applicativo ( View/Controller) da una parte ed appunto, il layer per laccesso ai dati dallaltro Un DAL nasce dallastrazione cui viene naturalmente sottoposta la funzionalità di accesso ai dati, nella sua veste reale, in quanto componente largamente ripetuta in seno ad uno sviluppo software Nello specifico della piattaforma ASP.NET, esempi di data access layers standard vengono forniti dallEntity framework e dai DataSets. La piattaforma mette inoltre a disposizione strumenti di semplice utilizzo per lintegrazione dei Data Consumers standard con DALs custom
3 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Il controllo ObjectDataSource permette lintegrazione dichiarativa tra i Data Consumers standard e DALs custom; esempio di data access layer custom è una classe C# esponente metodi per laccesso ai dati LObjectDataSource mappa i metodi del DataAccessLayer e può essere richiamato da un Consumer standard ObjectDataSource
4 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Esempio di Consumer detailsView e del relativo controllo ObjectDataSource di cui fruisce ObjectDataSource
5 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Esempio di Consumer GridView che fruisce di un controllo ObjectDataSource ObjectDataSource
6 Titolo Presentazione / Data / Confidenziale / Elaborazione di... ADO.Net Entity Framework
7 Titolo Presentazione / Data / Confidenziale / Elaborazione di... L Entity Framework fa parte di quella famiglia di tecnologie per laccesso ai dati nota con il nome di ADO.NET E un framework afferente alla famiglia dei cosiddetti Object Relational Mapper (ORM) che aiuta gli sviluppatori.NET nelloperazione di snellimento di quello che è il codice per realizzare laccesso ai dati (codice che spesso e volentieri risulta essere abbondante e ridondante). Permette la creazione di un cosiddetto Entity Data Model (EDM. Un Entity Data Model mappa strutture dati e relazioni tra esse intercorrenti; il motore dellORM gestisce generiche operazioni di accesso ai dati conformemente alle strutture mappate in seno allEDM stesso. Permette il disaccoppiamento tra lo strato di accesso ai dati ed il cosiddetto strato di presentation Lambiente di sviluppo Visual Studio 2010 espone tools per il supporto alla creazione e modellizzazione dellEDM, riducendo ulteriormente quanto ad onere dello sviluppatore/analista
8 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Creare un Entity Data Model con Visual Studio Si può utilizzare il wizard ADO.NET Entity Data Model generazione di un file [MyModel].edmx generazione di un file [MyModel.designer.cs] aggiunta di riferimenti (Es: System.Data.Entity) Modifica visuale dell Entity Data Model apertura in Visual Studio del file [MyModel].edmx ed utilizzo degli oggetti della toolbox Entity Framework apertura in Visual Studio del file [MyModel].edmx e modifica del modello a partire da un database esistente Entity Data Model
9 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Generazione Entity Data Model da database Modellodi un intero database: tabelle (comprensive di vincoli, chiavi e relazioni), viste, stored procedures Modello comprensivo di singoli oggetti del data base A fronte di oggetti quali tabelle/viste vengono generate entità nel Data Model; le entità mappano le corrispondenti strutture sulla base dati Entity Data Model
10 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Qualora gli oggetti della base dati siano tra loro relazionati, le relazioni vengono mappate in seno al Data Model attraverso apposite entità di relazione Entity Data Model
11 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Modifica del modello in modalità visuale con editor di Visual Studio Comporta lautomatizzazione delle modifiche ai sorgenti del modello [MyModel].edmx e [MyModel.designer.cs] [MyModel].edmx file xml descrittore del modello: ne espone la struttura attraverso una serie di tags xml (definiti da una opportuna grammatica) [MyModel.designer.cs] file di codice C#, espone metodi del Data Access Layer I files edmx e designer.cs vengono utilizzati dal motore dellEF per la gestione delle operazioni di accesso ai dati Entity Data Model
12 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Un file.edmx è un file XML che definisce un modello concettuale, uno storage model, ed una mappa tra i due. Un file.edmx contiene anche informazioni che sono usate dallADO.NET Entity Data Model Designer (Entity Designer) per renderizzare graficamente il modello. La best-practice di creazione di un file.edmx prevede luso del già citato Entity Data Model Wizard Contenuto di un file.edmx Runtime Content (edmx:Runtime) edmx:StorageModels edmx:ConceptualModels edmx:Mappings Designer Content (edmx:Designer) edmx:Connection edmx:Options edmx:Diagrams.edmx
13 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Runtime Content (edmx:Runtime) : questa sezione contiene informazioni che sono usate per generare il modello e mappare i file delle applicazioni che utilizzano lentity Framework edmx:StorageModels:questa sezione descrive lo schema(la struttura) del database target ed è scritta in linguaggio SSDL (Storage Schema Definition Language) edmx:ConceptualModels: Questa sezione definisce entità ed associazioni tra entità nel dominio applicativo. Questa sezione è scritta in linguaggio CSDL (Conceptual Storage definition Language) edmx:Mappings: Questa sezione descrive il mapping tra il modello concettualeed il database target ed è scritto in linguaggio MSL (Mapping Specification Language) Designer Content (edmx:Designer): questa sezione contiene informazioni utilizzate dall Entity Designer per renderizzare un modello concettuale graficamente edmx:Connection: questa sezione descrive le proprietà del modello concettuale che si riflettono sulla stringa di connessione edmx:Options: questa sezione descrive proprietà opzionali del modello concettuale edmx:Diagrams: questa sezione contiene informazioni usate dall Entity Designer per renderizzare graficamente il modello concettuale.edmx
14 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Un esempio di file.edmx (estratto).edmx
15 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Per richiamare il DataModel e funzionalità ad esso associate, in un documento.aspx è possibile utilizzare il controllo EntityDataSource Simile al controllo SqlDataSource, è specificatamente pensato per interagire con una sorgente dati gestita attraverso lEntityFramework Può essere esposto dichiarativamente in un documento.aspx attraverso un tag e fungere da intermediario tra il DAL (rappresentato dallEntity Framework) e i controlli di esposizione dati (layer View) Può essere richiamato da un qualsiasi controllo consumer, sia esso ad esempio una GridView o una Datalist EntityDataSource