1Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Data Access Layer
2Titolo 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 l’accesso 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 l’accesso ai dati dall’altro
Un DAL nasce dall’astrazione 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 dall’Entity framework e dai DataSets. La piattaforma mette inoltre a disposizione strumenti di semplice utilizzo per l’integrazione dei Data Consumers standard con DALs custom
3Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Il controllo ObjectDataSource permette l’integrazione dichiarativa tra i Data Consumers standard e DALs custom; esempio di data access layer custom è una classe C# esponente metodi per l’accesso ai dati
L’ObjectDataSource mappa i metodi del DataAccessLayer e può essere richiamato da un Consumer standard
ObjectDataSource
4Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Esempio di Consumer detailsView e del relativo controllo ObjectDataSource di cui fruisce
ObjectDataSource
5Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Esempio di Consumer GridView che fruisce di un controllo ObjectDataSource
ObjectDataSource
6Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
ADO.Net Entity Framework
7Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
L’ Entity Framework fa parte di quella famiglia di tecnologie per l’accesso 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 nell’operazione di snellimento di quello che è il codice per realizzare l’accesso 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 dell’ORM gestisce generiche operazioni di accesso ai dati conformemente alle strutture mappate in seno all’EDM stesso.
Permette il disaccoppiamento tra lo strato di accesso ai dati ed il cosiddetto strato di presentation
L’ambiente di sviluppo Visual Studio 2010 espone tools per il supporto alla creazione e modellizzazione dell’EDM, riducendo ulteriormente quanto ad onere dello sviluppatore/analista
8Titolo 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
9Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Generazione Entity Data Model da database
• Modello di 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
10Titolo 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
11Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Modifica del modello in modalità visuale con editor di Visual Studio
• Comporta l’automatizzazione 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 dell’EF per la gestione delle operazioni di accesso ai dati
Entity Data Model
12Titolo 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 dall’ADO.NET Entity Data Model Designer (Entity Designer) per renderizzare graficamente il modello.
La best-practice di creazione di un file .edmx prevede l’uso 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
13Titolo 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 l’entity 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
14Titolo Presentazione / Data / Confidenziale / Elaborazione di ...
Un esempio di file .edmx (estratto)
.edmx
15Titolo 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 l’EntityFramework
Può essere esposto dichiarativamente in un documento .aspx attraverso un tag
<asp:EntityDataSource> e fungere da intermediario tra il DAL (rappresentato dall’Entity 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