Spiegare un argomento nuovo e complesso, come può esserlo l’ADO.NET Entity Framework, in poco più di 200 pagine, non è un’impresa facile, e bisogna cercare di trovare il giusto compromesso tra il non essere troppo banali e il non addentrarsi nei più piccoli e minuziosi meandri e dettagli.
Se poi consideriamo che parecchie pagine di questo libro sono “occupate” da immagini enormi e lunghi listati XML, si capisce che la parte descrittiva e teorica è ben più corta.
Si può leggere quindi interamente questo libro in meno di una settimana. I concetti però necessitano di essere digeriti, e quindi si procederà a piccoli passi, magari provando subito il codice nel proprio Visual Studio 2008 (aggiornato però al Service Pack 1).
La Packt (come avevo già scritto una precedente recensione) è una casa editrice inglese con una forte composizione di personaggi indiani o asiatici in generale. L’autore di questo libretto è infatti originario dell’India, e il suo approccio a questo argomento è molto pragmatico, dando molto spazio al “fare”, piuttosto che agli aspetti teorici (trattati giusto quanto serve per giustificare gli esempi).
L’autore non si perde in lunghe introduzioni teoriche su cosa sia un ORM o cosa sia ADO.NET, e passa subito all’azione con un progetto di esempio. Il target di lettore è quindi uno sviluppatore sufficientemente esperto, sia di C# (il linguaggio utilizzato nel codice), sia di ADO.NET che del .NET Framework in generale. Se poi ha un’infarinatura anche di basi di ORM (magari ha usato NHibernate), tanto meglio.
Nelle prime pagine si spiega cosa è l’ADO.NET Entity Framework e cosa ha di diverso ed innovativo rispetto agli altri ORM e come sono strutturati i layer architetturali su cui esso si posiziona. Alcune pagine sono riempite con gli script per la creazione del piccolo (sole 5 tabelle) database di esempio (“Payroll”, una sorta di gestionale per le buste paga) e parecchie schermate per la corretta installazione di tutto quanto serve per approntare un pc con l’Entity Framework installato ed integrato in Visual Studio 2008. Consiglio di seguire per bene la procedura illustrata, perché personalmente, ben prima di leggere queste pagine, avevo trovato difficoltà ad installare tutto ciò che serve, e in tali frangenti ci si mette anche la Microsoft (si era creata una sorta di circolo vizioso: per installare A, serviva B, ma per installare B, serviva C, in quale per essere installato necessitava di A, e così via).
Si prosegue poi illustrando le procedure visive di Visual Studio per la “mappatura” di oggetti del database, facendo particolare attenzione alle relazioni tra tabelle. Si spiega poi l’Entity SQL, il dialetto SQL utilizzato all’interno dell’Entity Framework.
Un aspetto positivo degli esempi è che per tutto il libro viene utilizzato lo stesso database, quindi stessa struttura, stesse tabelle, ecc. e lo stesso progetto. Una volta presa familiarità con esso è perciò facile e rapido seguire l’evolversi del codice, senza dover ogni volta prendere confidenza con situazioni diverse (come spesso accade in altri libri). Non ci sono esercizi da portare a termine, né domande o quiz di riepilogo.
Ogni capitolo ha solo un breve riassunto conclusivo, giusto per sottolineare di cosa si è parlato.
Purtroppo sono da segnalare tutta una serie di problemi che pregiudicano la valutazione complessiva di questo libro (e pensare che l’autore è pure un MVP in ASP.NET).
Si inizia col riempire pagine e pagine di codice XML autogenerato (da Visual Studio), decisamente inutile, per proseguire poi offrendo al lettore degli script di creazione del database di esempio che non corrispondono a quanto visualizzato nel diagramma delle tabelle (manca una tabella e le colonne non corrispondono). Persino lo script stesso non compila. E per un libro così piccolo, una mancanza di cura in questi dettagli (che poi tanto dettagli non sono), non è un bel biglietto da visita.
Ammetto poi che dal terzo capitolo ho interrotto la lettura approfondita; troppo frustrante seguire un discorso poco chiaro, non capire il codice a causa di una pessima indentazione (e nemmeno spiegato nei dettagli), e tanti concetti lasciati a metà, senza approfondire la cosa.
Se vorrò approfondire l’argomento, credo proprio che mi rivolgerò ad altri testi.
L’impaginazione complessiva è quanto di più scarno si possa trovare in commercio. Oltre alle immagini e al grassetto non si trova altro, e forse una migliore attenzione a questi aspetti estetici non avrebbe guastato.
Anche l’indentazione del codice necessiterebbe di una rivisitazione, magari scegliendo per esso un tipo di carattere più piccolo.
L’inglese utilizzato invece, forse per il fatto che l’autore non è madrelingua, è davvero comprensibile, e quasi mai capita di dover ricorrere al dizionario.
Forse il prezzo risulta un po’ elevato, considerate le piccole dimensioni del libro e la quantità di “conoscenza” elargita.
Ovviamente, per chi volesse seriamente approfondire l’ORM di casa Microsoft, deve considerare questo libro solo come il primo passo (se proprio si vuole partire da questo), giusto per prendere confidenza, per poi passare a libri di ben altro spessore una volta acquisite le basi.
Questo è il link della pagina del sito della Pack dedicato al libro.
Qua è possibile scaricarsi il codice sorgente di circa 8 kB (previo inserimento della propria mail per ricevere il link da cui scaricarlo), il sommario dettagliato e soprattutto il capitolo 2 completo (26 pagine).
Per quanto riguarda il piccolo file del codice sorgente, esso è composto da pochi file in formato .txt e suddivisi per capitolo.
PRO
Per chi vuole iniziare a capire cosa è l’Entity Framework, e cosa serve e come si usa, ed ha poco tempo da dedicarci, questo libro può rappresentare un discreto punto di partenza.
Può essere letto comodamente in un solo weekend, e la ricchezza di immagini e procedure guidate aiutano nell’apprendimento con Visual Studio 2008. L’inglese utilizzato dall’autore (non di madrelingua anglosassone) è indubbiamente di facile comprensione.
CONTRO
Errori negli script di creazione del database, pagine e pagine riempite con inutile XML autogenerato, sono esempi eclatanti di scarsa cura realizzativa. Scrittura spesso contorta e poco chiara.
Immagini enormi, che spesso occupano l’intera pagina; si sarebbero potute ridurre un attimo, senza per questo perdere in definizione dei dettagli e chiarezza. Impaginazione decisamente migliorabile.
Voto complessivo: 5.5/10
Lettore: Intermedio
Table of Contents
Preface
Chapter 1: Introducing the ADO.NET Entity Framework
What You should Know
Looking Back
What is ADO.NET Entity Framework?
Is It Just Another ORM?
The ADO.NET Entity Framework Architectural Components
The Entity Data Model (EDM)
How is the Entity Data Model Represented?
The Object Model (O-Space)
LINQ to Entities
Entity Client
Entity SQL
Avoiding Complex Joins
The Object Services Layer
ADO.NET Entity Framework—Features and Benefits at a Glance
Installing the Prerequisites
Installing the ADO.NET Entity Framework and Its Tools
Downloading the Software
Installing the Software
Designing the Payroll Database
Summary
Glossary
Chapter 2: Getting Started
Creating an Entity Data Model
Creating the Payroll Entity Data Model Using the ADO.NET Entity Data Model Designer
Creating the Payroll Data Model Using the EdmGen Tool
The ADO.NET Entity Data Source Control
Implementing Our First Application Using the Entity Framework
Summary
Chapter 3: Entities, Relationships, and the Entity Data Model
Entities, Entity Types, and Relationships in the ADO.NET Entity Data Model (EDM)
What is an Entity?
Defining Entity Sets in the Entity Data Model
Extending the Existing Entity Types to Create Derived Entity Types
Association Sets, Associations, Containment, and Multiplicity
What are Entity Containers?
Exploring the Payroll Entity Data Model
The Mapping Details Window
The Entity Model Browser
The Entity Data Model Layers
The CSDL Schema
The SSDL Schema
The MSL Schema
Summary
Chapter 4: Working with Stored Procedures in the Entity Data Model
Mapping Stored Procedures to Functions in the EDM
Mapping Create, Update, and Delete Functions to Entities in the EDM
Mapping the Association Sets Consistently
Mapping Stored Procedures with No Entity Set
Using Stored Procedures
Mapping Stored Procedures that Return Custom Entity Types
Summary
Chapter 5: Working with Entity Client and Entity SQL
An Overview of the Entity SQL Language
From Transact SQL (T-SQL) to Entity SQL (E-SQL)
Why Entity SQL When I Already have LINQ to Entities?
Features of Entity SQL
Operators in Entity SQL
Arithmetic Operators
Comparison Operators
Logical Operators
Reference Operators
Type Operators
Set Operators
Operator Precedence
Expressions in Entity SQL
Query Expressions in Entity SQL
Identifiers, Variables, Parameters, and Types in Entity SQL
Row
Collection
Reference
Canonical Functions in Entity SQL
Mathematical Functions
Aggregate Functions
String Functions
Bitwise Functions
Date and Time Functions
Data Paging Using Entity SQL
Working with the ADO.NET Entity Client
Let's Get into Action
Building the Connection String
Creating an Entity Connection
Opening the Connection
Executing Queries Using the Entity Command
Closing the Connection
Other Operations with Entity SQL
Inserting a Record Using Entity SQL
Inserting a Record with a Foreign Key Constraint
Retrieving Native SQL from EntityCommand
Transaction Management in Entity SQL
Summary
Chapter 6: Working with LINQ to Entities
Introducing LINQ
Why LINQ?
Understanding the LINQ Architecture
LINQ to XML
LINQ to SQL
LINQ to Objects
LINQ to Entities
Querying Data Using LINQ to Entities
LINQ to Entities and Entity Framework
Differences between LINQ to Entities and LINQ to SQL
Operators in LINQ
Aggregation
Projections
Ordering
Quantifiers
Restriction
Conversion
Element
Set
Querying Data Using LINQ
Expressions in LINQ to Entities
Constant Expressions
Comparison Expressions
Initializing Expressions
Null Comparisons
Navigation Properties
Immediate and Deferred Query Execution
Improving Performance with Compiled Queries
Summary
Chapter 7: Working with the Object Services Layer
What are Object Services?
Features at a Glance
A Quick Look at the ObjectContext Class in our Payroll EDM
Querying Data as in-Memory Objects
Adding, Modifying, and Deleting Objects
Attaching and Detaching Objects to and from the Object Context
Serializing and De-Serializing Entity Instances
Change Tracking and Identity Resolution Using ObjectContext
Implementing a Sample Application
Creating the Form
Implementing a Custom DataContext
How is This Accomplished?
Inheritance in the Entity Framework
Table per Hierarchy
Table per Type
Implementing Complex Types in the EDM
Summary
Chapter 8: Introducing ADO.NET Data Services
Introducing ADO.NET Data Services
How Do ADO.NET Data Services and Web Services Differ?
What is Representational State Transfer (REST)?
Why Use ADO.NET Data Services?
Features at a Glance
Prerequisites
Exposing Data as a Service Using ADO.NET Data Services
Creating an ADO.NET Data Service
Using a Relational Database as the Data Source
Using Data Sources Other Than a Relational Database
Understanding the System.Services.Data Namespace
Restricting Access to Resources
Working with the ADO.NET Data Service Client Library
Generating the Client-Side Entity Classes
Inserting a Record
Updating a Record
Deleting a Record
Consuming an ADO.NET Data Service Using LINQ
Exposing a Stored Procedure as a URI
Handling Exceptions in ADO.NET Data Services
Batching ADO.NET Data Services Requests to Improve Performance
Debugging Your Data Service
References
Summary
Index
Titolo: Entity Framework Tutorial
Autore: Joydip Kanjilal
Editore: Packt Publishing
ISBN: 978-1-847195-22-7
Pagine: 210
Prezzo: 39.99 $ (prezzo di copertina)
Data di uscita: Ott. 2008