1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

15
1 Titolo Presentazione / Data / Confidenziale / Elaborazione di ... Data Access Layer

Transcript of 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

Page 1: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

1Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Data Access Layer

Page 2: 1 Titolo 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

Page 3: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 4: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

4Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Esempio di Consumer detailsView e del relativo controllo ObjectDataSource di cui fruisce

ObjectDataSource

Page 5: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

5Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Esempio di Consumer GridView che fruisce di un controllo ObjectDataSource

ObjectDataSource

Page 6: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

6Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

ADO.Net Entity Framework

Page 7: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 8: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 9: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 10: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 11: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 12: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 13: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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

Page 14: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

14Titolo Presentazione / Data / Confidenziale / Elaborazione di ...

Un esempio di file .edmx (estratto)

.edmx

Page 15: 1 Titolo Presentazione / Data / Confidenziale / Elaborazione di... Data Access Layer.

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