ado net entity framework
TRANSCRIPT
{{ADO.Net Entities ADO.Net Entities FrameworkFramework}}
{Carlos Chávez V. }Arquitecto de [email protected]://blogs.comunidadesandinas.com/blogs/cchavez/[email protected]
Evolucion de Acceso a Datos
{{ADO.Net Entities ADO.Net Entities FrameworkFramework}}
Beta 3Beta 3
Más allá del modelo relacional
¿Qué es ADO.NET: Entity Framework?
• Es un OR/M de Microsoft para la tecnología .Net
• Actualmente en Beta3
¿Qué es un OR/M?• Object Relational / Mapping• Resolver la impedancia entre el desencuentro de un modelo de datos relacional y
un modelo conceptual OO y los procesos asociados.• Evitar la implementación de una capa de acceso a datos (DAOs), mapeado, o
incluso genera el modelo conceptual (DTOs) • Recomendable en aplicaciones empresariales
{ADO.Net Entities Framework}{ADO.Net Entities Framework}
Escenario IdealDiseño Conceptual
(Entidades & Relaciones)Clientes Cuenta
Servicio
poseeposee
manejamaneja
Aplicacion(Entidades & Relaciones)
{ADO.Net Entities Framework}{ADO.Net Entities Framework}
Escenario Actual
Aplicación(Entidades & Relaciones)
Esquema Relacional(normalización, tablas, keys)
SP's
Views
Fn's
Mapeo LogicoConceptual<->Relacional
Aplicación(Entidades& Relaciones)
SP's
Views
Fn's
Mapeo LogicoConceptual<->Relacional
Aplicacion(Entidades & Relaciones)
SP's
Views
Fn's
Mapeo LogicoConceptual<->Relacional
{ADO.Net Entities Framework}{ADO.Net Entities Framework}
Arquitectura
Base de Datos relacionalBase de Datos relacional
Soporte para consultas vía LINQ denominado LINQ to EntitiesSoporte para consultas vía LINQ denominado LINQ to Entities
Un modelo de objetos para acceder a la capa conceptualUn modelo de objetos para acceder a la capa conceptual
Un objeto para generar consultas dentro del modelo Object ServicesUn objeto para generar consultas dentro del modelo Object Services
Lenguaje denominado eSQL o Entity SQL semejante a SQL pero con capacidades adicionales
Lenguaje denominado eSQL o Entity SQL semejante a SQL pero con capacidades adicionales
Niveles de abstracciónNiveles de abstracción
Nivel conceptual descrito por un lenguaje denominado Conceptual Schema Definition Language (CSDL)
Nivel conceptual descrito por un lenguaje denominado Conceptual Schema Definition Language (CSDL)Un lenguaje de mapeado de esquema lógico a esquema conceptual (MSL)Un lenguaje de mapeado de esquema lógico a esquema conceptual (MSL)
Nivel Lógico descrito por un lenguaje denominado Store Schema Definition Language (SSDL)
Nivel Lógico descrito por un lenguaje denominado Store Schema Definition Language (SSDL)
Proveedor de acceso a datos semejante a SqlClientProveedor de acceso a datos semejante a SqlClient
{ADO.Net Entities Framework}{ADO.Net Entities Framework}
Entity Data Model
ClasesOO
ClasesOO
Entity Data Model
Schema
Database Objects Schema
C-SMSLC-SMSL
SSDLSSDLCSDLCSDL
Presentación(Forms/Reports)Presentación(Forms/Reports) Clases
OOClases
OO
Modelo Conceptual Modelo LógicoMap
Base de Datos Relacional
Servicios
Mapeado: Características• Relacionar los datos del almacén hasta las clases del
modelo conceptual• Tipos complejos • Procedimientos almacenados y Vistas• Entidad simple a varias tablas• Múltiple EntitySets por Tipo (MEST)• Herencia:
– Tabla por jerarquía (Table per Hierarchy) TPH– Tabla por tipo concreto (Table per Type) TPT– Tabla por subclase (Table per Subclass) or TPS
Modelo Conceptual en EF• Clases prescriptivas
– Structural Object > EntityObject – Gestión de identidad (EntityKey)– Gestión de cambios (TrackingEntity event)– Soporte para relaciones (EntityCollection)– Estado (EntityState)– Son clases parciales
Object Context• Clase derivada (generada) de ObjectContext• Tipado Fuerte: Manipulación del Modelo Conceptual
– Consultas/Recuperación: Blogs: ObjectQuery;– Inserciones: .AddToBlog(Blog b); .AddObject(…), – Borrado: .DeleteObject– Persistencia: .SaveChanges();
• Gestión de la conexión• Metadata (a partir de CSDL)• Almacen o caché en memoria de objetos• Tracking de estado objetos:
– .Attach(..), .Dettach(..) – ObjectStateManager– MergeOption
ObjectStateManager• Seguimiento del estado de entidades• Gestiona entradas EntityStateEntry para cada Entidad en almacen en
memoria.– Cuando se cargan (Query, Attach): Unchanged– Cuando se crean (AddObject): Added– Cuando se modifican: Changed– Cuando se borran: Deleted– Cuando se destruye el ObjectContext: Detached– Al aplicar ObjectContext.SaveChanges() en Added, Changed, cambia a
Unchanged.
Almacen: SGBDs soportados• SQL Server (2005/2008)Fabricante Provider para
CoreLab Oracle, MySQL, PostgreSQL, SQLite
IBM DB2, Informix Dynamic Server
MySQL AB MySQL
Npgsql PostgreSQL 7.3+ y 8.x
OpenLink Oracle, Ingres, Informix, Sybase, MySQL, PostgreSQL, DB2, Progress, SQL Sever, (cq. Datasource OpenLink ODBC o bridge JDBC)
Phoenix SQLite Database
Sybase SQL Anywhere
Vista DB VistaDB databases
Datadirect Tech. Orable, Sybase, SQL Server, DB2…
Firebird Firebird databases
AdventureWorks db = new AdventureWorks();AdventureWorks db = new AdventureWorks(); Query<SalesPerson> newSalesPeople = Query<SalesPerson> newSalesPeople =
db.GetQuery<SalesPersondb.GetQuery<SalesPerson>(@”>(@” SELECT VALUE sp SELECT VALUE sp
FROM SalesPeople AS spFROM SalesPeople AS sp WHERE sp.HireDate > @Date"WHERE sp.HireDate > @Date",,
new QueryParameter(“Date", hireDate));new QueryParameter(“Date", hireDate)); foreach(SalesPerson p in newSalesPeople) {foreach(SalesPerson p in newSalesPeople) { Console.WriteLine("{0}\t{1}", p.FirstName, Console.WriteLine("{0}\t{1}", p.FirstName, p.LastName); p.LastName); }}
Otros…VBC#
Base de Datos RelacionalBase de Datos Relacional
No hay No hay intellisence intellisence
Argumento Argumento debilmente debilmente enlazadosenlazados
No hay No hay validación en validación en
tiempo de tiempo de compilacióncompilación
Others…VBC#
.NET Language-Integrated Query (LINQ)
LINQ enabled data sourcesLINQ enabled data sourcesLINQ enabled ADO.NETLINQ enabled ADO.NET
LINQTo Datasets
LINQTo SQL
LINQTo Entities
LINQTo XML
LINQTo Objects
ObjectsObjects
<book> <title/>
<author/> <price/>
</book>
XMLXMLRelatioRelationalnal
Recursos• MSDN: Entity Framework BETA3
– http://msdn2.microsoft.com/en-us/library/bb739441.aspx
• Blog de ADO.NET– http://blogs.msdn.com/adonet/
• MUGLIMA– www.muglima.com
• Blogs en castellano– Carlos Chávez Blog - http://geeks.ms/blogs/cchavez/