ADO.Net Ing. Christian Ovalle [email protected] 1 Ado.NET • Evolución del Modelo de datos ADO • Integrado en la Plataforma .NET Framework – Sistema de Clases integrado en los espacios de Nombres .NEt • Mas Flexible – trabaja con modelos multitabla desconectados) • Permite Escalabilidad • Orientado a la arquitecturas Multinivel TGp-2010 (Capa Persistencia) 23/11/2010 2 Ado.Net TGp-2010 (Capa Persistencia) 23/11/2010 3 ADO.Net • ADO.NET es el modelo de acceso a datos para las aplicaciones basadas en .NET • Se puede utilizar para acceder a sistemas de base de datos relacionales. Ejemplos: – SQL Server, Oracle, etc. • Muchas otras fuentes de datos (para las cuales existe un proveedor OLE DB u ODBC) • Soporte intrínseco para XML • Programación Orientada a Componentes TGp-2010 (Capa Persistencia) 23/11/2010 4 • ADO trabaja bien, pero: – Necesita COM y Windows – Los recordsets no viajan bien a través de Internet • ADO.NET resuelve estos problemas: – Utiliza XML (a bajo nivel) para realizar el transporte de datos – XML no tiene requisitos específicos de runtime/transporte • No se necesita un código especial para hacer el marshaling a través de Internet • ADO .NET, una nueva mentalidad: – Entorno desconectado – Todo el transporte de datos utiliza XML TGp-2010 (Capa Persistencia) 23/11/2010 5 Evolución • ODBC (Open DataBase Connectivity) – Interoperatibilidad con amplio rango de SGBD – API acceso ampliamente aceptada – Usa SQL como lenguaje de acceso a datos • DAO (Data Access Objects) – Interfaz de programación para bases de datos JET/ISAM (e.g. – MS Access) • RDO (Remote Data Objects) – Estrechamente ligado a ODBC – 2rientado a aplicaciones cliente/servidor • OLE DB (Object Linking and Embedding for Databases) – – – – – No restringido a acceso a datos relacionales No limitado a SQL como lenguaje de recuperación de datos Tecnología desarrollada por Microsoft Construido sobre COM (Component Object Model) Proporciona una interfaz a bajo nivel en C++ 6 Plataforma .Net TGp-2010 (Capa Persistencia) 23/11/2010 7 Arquitectura Framework .NET TGp-2010 (Capa Persistencia) 23/11/2010 8 Componentes TGp-2010 (Capa Persistencia) 23/11/2010 9 Dos Componentes • Proveedores de datos – Proporcionar conexión con las bases de datos – Manipulación de Datos – Acceso rápido en avance de solo lectura • Data Set – Componente Central de la Arquitectura – Acceso a datos y su manejo independiente del origen • Entre ambos se incluyen: – Connection, Command, DataReader y DataAdapter TGp-2010 (Capa Persistencia) 23/11/2010 10 Arquitectura TGp-2010 (Capa Persistencia) 23/11/2010 11 Proveedores de datos .NET Framework • Los proveedores de datos .NET Framework son componentes diseñados explícitamente para la manipulación de datos y el acceso rápido a datos de solo lectura y solo avance. – Connection • proporciona conectividad a un origen de datos. – Command • permite tener acceso a comandos de base de datos para devolver datos, modificar datos, ejecutar procedimientos almacenados y enviar o recuperar información sobre parámetros. – DataReader • proporciona un flujo de datos de alto rendimiento desde el origen de datos. – DataAdapter • proporciona el puente entre el objeto DataSet y el origen de datos. • utiliza objetos Command para ejecutar comandos SQL en el origen de datos tanto para cargar DataSet con datos y reconciliar en el origen de datos los cambios aplicados a los datos incluidos en el DataSet. TGp-2010 (Capa Persistencia) 23/11/2010 12 DataSet • El DataSet de ADO.NET es el componente central de la arquitectura sin conexión de ADO.NET. • El DataSet está expresamente diseñado para el acceso a datos independientemente del origen de datos. • Como resultado, se puede utilizar con múltiples y distintos orígenes de datos, con datos XML o para administrar datos locales de la aplicación. • El DataSet contiene una colección de uno o más objetos DataTable formados por filas y columnas de datos, así como información sobre claves principales, claves externas, restricciones y relaciones relativa a los datos incluidos en los objetos DataTable. TGp-2010 (Capa Persistencia) 23/11/2010 13 Conceptos Básicos • Modelo de objetos – Objetos de System.Data – Proveedores de acceso a datos .NET • Jerarquía de espacio de nombres (namespace) – Organiza el modelo de objetos – Incluye: • • • • • System.Data System.Data.Common System.Data.OleDb System.Data.SqlClient System.Data.SqlTypes TGp-2010 (Capa Persistencia) 23/11/2010 14 ADO.NET: Connection • OleDbConnection/SQLConnection • Representa la sesión contra la BD • Utilizado por objetos Data Adapter y Command para recuperar/actualizar • Inicia las transacciones – Connection.BeginTransaction() devuelve un objeto Transaction – xxxTransaction • Un comando se enlista en una transacción • Isolation Level • Commit() / Rollback() • Configuración del pool de conexionesen el connection string TGp-2010 (Capa Persistencia) 23/11/2010 15 ADO.NET: Command • OleDbCommand/SQLCommand • Representa Transact-SQL o procedimientos almacenados • Devuelve un resultset (ExecuteReader), un valor (ExecuteScalar), o ejecuta sentencias de modificación (ExecuteNonQuery) • Generación automática con el objeto CommandBuilder TGp-2010 (Capa Persistencia) 23/11/2010 16 ADO.NET: DataReader • • • • • OleDbDataReader/SQLDataReader Stream forward-only read-only Utilizado por el DataAdapter Muy rápido Creado por un objeto Command (ExecuteReader) TGp-2010 (Capa Persistencia) 23/11/2010 17 ADO.NET: DataAdapter • OleDbDataAdapter/SQLDataAdapter • Representa un conjunto de Commands y una Connection • Puente entre el DataSet y la BD • Lee y actualiza la BD: – SelectCommand, – UpdateCommand, – InsertCommand – DeleteCommand TGp-2010 (Capa Persistencia) 23/11/2010 18 ADO.NET: DataAdapter TGp-2010 (Capa Persistencia) 23/11/2010 19 ADO.NET: DataSet • • • • • Objeto estrella en ADO.NET Representa una caché de datos en memoria Contiene DataTables Lee y escribe datos y esquemas en XML Puede ser tipado o no tipado: – Ambos heredan de la clase DataSet – El tipado se apoya en un esquema XML (.XSD) para generar la clase – El tipado tiene ventajas: • Expone estructura como propiedades y métodos: Intellisense • Recoge la Primary key TGp-2010 (Capa Persistencia) 23/11/2010 20 Otros Objetos • DataTable – Representa una tabla en memoria – Lo rellena un DataAdapter o a mano – Componente principal de los objetos DataSet y DataView • DataView – Vista personalizada de un objeto DataTable – Filtros, ordenación, búsquedas … • DataRelation – Define relaciones entre tablas – Utiliza columnas de un DataTable TGp-2010 (Capa Persistencia) 23/11/2010 21 DataSet TGp-2010 (Capa Persistencia) 23/11/2010 22 Elegir un DataReader o un DataSet • • La elección entre DataReader (vea Recuperar datos mediante DataReader) o un DataSet (vea Crear y utilizar DataSets), debe tener en cuenta el tipo de funcionalidad que su aplicación requiere. Usar un DataSet para hacer lo siguiente: – Utilizar datos de forma remota entre un nivel y otro o desde un servicio Web XML. – Interactuar con datos dinámicamente, • por ejemplo para enlazar con un control de Windows Forms o para combinar y relacionar datos procedentes de varios orígenes. – Almacenar datos en memoria caché localmente, dentro de su aplicación. – Proporcionar una vista XML jerárquica de datos relacionales y utilizar herramientas como una transformación XSL o una consulta Xpath (XML Path Language) en sus datos. – Realizar procesamientos exhaustivos de datos sin necesidad de tener una conexión abierta con el origen de datos, lo que libera la conexión para que la utilicen otros clientes. • Se puede mejorar el rendimiento de su aplicación si utiliza el DataReader para devolver sus datos de sólo avance y de sólo lectura. – al utilizar el DataReader puede mejorar el rendimiento porque no usará la memoria que utilizaría el DataSet, – Evita el procesamiento necesario para crear y rellenar el contenido del DataSet. TGp-2010 (Capa Persistencia) 23/11/2010 23 ADO.NET: Lecturas • Método Fill del objeto DataAdapter • Se utiliza el SelectCommand del DataAdapter • Inserta/actualiza datos del DataSet – Si la tabla existe, actualiza datos – Si no existe, crea y rellena la tabla – Una tabla por cada resultset • Mantiene la conexión en su estado original TGp-2010 (Capa Persistencia) 23/11/2010 24 ADO.NET: Actualizaciones • La funcionalidad en ADO es implícita. Recordset= caja negra. – Ejemplo: UpdateBatch • En ADO.NET: Se crea un modelo más explícito y transparente. – – – – InsertCommand, UpdateCommand, DeleteCommand Eventos de Update • CommandBuilder – generación automática de los comandos de Insert, Update y Delete a partir del Select Command TGp-2010 (Capa Persistencia) 23/11/2010 25 ADO.NET: Actualizaciones • DataAdapter.Update: – Analiza los cambios del DataSet – Ejecuta los comandos Insert, Update y Delete necesarios • Refresca el DataSet • Orden de ejecución por defecto: – Insert, Update y Delete. TGp-2010 (Capa Persistencia) 23/11/2010 26 ADO.NET: Enlace Controles (binding) • ADO.NET soporta enlazar (binding) DataSets a Windows Forms / Web Forms y sus controles • VStudio.NET incluye bastantes Ayudas (wizards) para hacer el enlace entre datosy controles TGp-2010 (Capa Persistencia) 23/11/2010 27 Ejemplo TGp-2010 (Capa Persistencia) 23/11/2010 28 “WCF Data Services” • Implementar servicios de datos en web o en una intranet. • Los datos se estructuran como entidades y relaciones de acuerdo a las especificaciones de Entity Data Model. • Los datos implementados en este modelo se pueden direccionar mediante el protocolo HTTP estándar. TGp-2010 (Capa Persistencia) 23/11/2010 29