PDF de programación - Implementando Aplicaciones .NET con ODP.NET & Entity Framework

Imágen de pdf Implementando Aplicaciones .NET con ODP.NET & Entity Framework

Implementando Aplicaciones .NET con ODP.NET & Entity Frameworkgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 21 de Febrero del 2018)
639 visualizaciones desde el 21 de Febrero del 2018
637,2 KB
31 paginas
Creado hace 11a (19/01/2013)
Implementando Aplicaciones .NET con ODP.NET & Entity Framework



Por Francisco Riccio





Introducción

Este material está dedicado a detallar algunos conceptos básicos de la arquitectura ADO
.NET de Microsoft llevados hacia las aplicaciones que interactúan con la base de datos
Oracle.

ADO.NET es la capa dentro de .NET Framework que permite interactuar a las
aplicaciones con un motor relacional, tiene especificado una serie de interfaces que todo
proveedor de base de datos debe implementar si desea que su tecnología de base de
datos pueda integrarse a las aplicaciones de Microsoft .NET.

Se adjunta la arquitectura de ADO.NET:

Figura 1



En la arquitectura de ADO.NET se puede trabajar con los datos de manera conectada y
desconectada con la base de datos. La clase de que nos permite trabajar de manera
conectada es el DataReader el cual será el que se usará en este documento y de manera
desconectada se realiza a través de las clases: DataAdapter y DataSet. La clase DataSet
almacena información obtenida de la base de datos extraída mediante la clase
DataAdapter.

Recomiendo la lectura a la siguiente página web para obtener mayor detalle de ADO.NET:

1



http://msdn.microsoft.com/en-us/library/e80y5yhx.aspx

Microsoft cuenta con una librería llamada Microsoft Oracle Client como parte de .NET
Framework. Esta librería implementa la interfaz de ADO.NET para conectarse a la base
de datos Oracle. Oracle Corporation también liberó una librería conocida como ODP.NET
entregando mejores resultados de performance y ventajas sobre Microsoft Oracle Client,
aprovechando todos la gran mayoría de features de la base de datos directamente.

En la siguiente dirección web se detallan las ventajas entre ODP.NET vs Microsoft Oracle
Client:

http://www.oracle.com/technetwork/topics/dotnet/index-154765.html

Cabe mencionar que Microsoft Oracle Client permite implementar aplicaciones con
conexión de base de datos Oracle versión 8.1.7 hacia adelante y viene a través del
namespace System.Data.OracleClient.

ODP.NET está disponible su descarga gratuitamente en la página oficial de Oracle que se
adjunta:

http://www.oracle.com/technetwork/developer-tools/visual-studio/downloads/index.html

Una parte del material estará enfocado a desarrollar un ejemplo de cómo trabajar con
ODP.NET para realizar un mantenimiento a una tabla de base de datos Oracle y
asimismo la segunda parte del documento implementará el mismo mantenimiento
utilizando Entity Framework y LINQ de manera práctica.

Entity Framework es un conjunto de tecnologías diseñadas para desarrollar aplicaciones
que accedan a la información en un modelo de aplicaciones conceptual basado en un
modelo de objetos y no enfocado a tablas de un modelo relacional. Un similar framework
a esté en el mercado es NHibernate.

La manera de como se manipula la información en este tipo de modelo se realiza no
mediante sentencias SQL sino a través del lenguaje LINQ. LINQ se encarga de traducir
nuestro requerimiento a la sintaxis propia del motor de base de datos donde se conecta.

Ambas implementaciones se han realizado en una configuración con Oracle Database
11g (11.2.0.3) en plataforma Oracle Linux 32 bits y .NET Framework 4.0 con ODP.NET 4.
El IDE de desarrollo para las implementaciones es sobre Visual Studio 2010 basado en el
lenguaje C#.

Se asume que el lector ha tenido experiencia previa con Visual Studio en la construcción
de aplicaciones .NET con acceso a datos; si no fuera el caso recomiendo la revisión de la
siguiente página web como referencia:

http://www.oracle.com/technetwork/es/articles/dotnet/cook-dotnet-083575-esa.html



2

Implementación ODP.NET

El objetivo del siguiente programa a implementar es construir una aplicación .NET que
pueda dar mantenimiento a la tabla PRODUCTO la cual reside en la base de datos
Oracle.

Se presenta la estructura de la tabla PRODUCTO acompañado de su script de creación.



Figura 2

SQL> create table PRODUCTO (id number, descripcion varchar(20), pu number,
registrado date);



La arquitectura que tendrá la aplicación está basado en un modelo de tres capas las
cuales son: Capa de Acceso a datos encargada de acceder a la fuente de datos provista
en este caso con ODP.NET, Lógica de Negocio la cual lleva la implementación de los
escenarios y reglas del negocio y la capa de Presentación que podría ser un programa de
escritorio, web o móvil. En nuestra implementación se realizará una aplicación de
escritorio. La manera de como se lleva la información entre las capas presentadas se
realiza mediante la librería Entidades. La librería Entidades lleva la información
almacenada en la base de datos mediante objetos entre las diferentes capas
mencionadas.

Este tipo de arquitectura nos permite tener una aplicación flexible a cambios y de fácil
mantenimiento y soporte.

Se adjunta un gráfico de los componentes mencionados.



3

Figura 3





Donde en el Visual Studio se representará en 4 proyectos como se muestra:



La interfaz de la pantalla de mantenimiento de la tabla Producto tendrá la siguiente
forma:



4

Figura 4





Se detallará el desarrollo de la capa de Acceso a Datos (DAO) mediante la
implementación de ADO.NET con ODP.NET.

Capa DAO

Para su implementación se realizó las siguientes actividades:

a) Debemos crear un nuevo proyecto de tipo Class Library, ejemplo:

Figura 5

b) Al nuevo Class Library agregado le añadimos la librería de ODP.NET
(Oracle.DataAccess).





5

Figura 6

Nota: Esta librería aparecerá en nuestro Visual Studio cuando instalemos ODP.NET sobre
la estación de desarrollo.

c) La librería DAO tendrá dos clases: Conexion y ProductoDAO.





Figura 7

La clase Conexion se encarga de generar la conexión hacia la base de datos y la clase
ProductoDAO implementa las operaciones de mantenimiento a la tabla Producto.

d) Se detalla la implementación de la clase Conexión.



6

Donde se observa lo siguiente:

• La clase conexión de ODP.NET que nos permite conectarnos a la base de datos

se llama OracleConnection el cual está en el namespace
Oracle.DataAccessClient.

• La clase OracleConnection recibe la cadena de conexión cuya especificación está

almacenada en la configuración de la aplicación (App.config).





Figura 8



El contenido del archivo es:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="CONEXION" value="Data
Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=142.68.1.20)(PO
RT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)));User

7



Id=FRICCIO;Password=oracle;Enlist=false;Pooling=true"/>

</appSettings>

</configuration>



El atributo Pooling de la conexión de la base de datos permite que la aplicación
no esté creando una conexión física a la base de datos en cada solicitud que se
necesite una conexión, por tal motivo la conexión se crea una vez y se mantiene
establecida en la base de datos con mínimos recursos utilizados en la base de
datos. Por default su valor es true y se recomienda dejarlo en ese valor.

El atributo Enlist permite que las operaciones DML que se ejecutan mediante la
conexión establecida se trabajen como parte de una transacción distribuida. Si
no fuera nuestro caso, se debe colocar el valor de false ya que por default tiene
el valor de true.

Nota: La siguiente página web contiene una serie de ejemplos de como generar
nuestra cadena de conexión con diferentes opciones:

http://www.connectionstrings.com/oracle



e) Se detalla la implementación de la clase ProductoDAO.



8





Se puede observar que la clase implementa una función para obtener la lista de
Productos almacenados en la base de datos y sus tres operaciones de mantenimiento
(insertar/eliminar/modificar).

La clase utiliza los namespaces: Oracle.DataAccess.Client y Oracle.DataAccess.Types.



Implementación de la función que obtiene la lista de Productos:

La función getProductos devuelve un arreglo que contiene los productos almacenados en
la tabla Producto. Cada elemento del arreglo es un objeto de la clase EProducto de la
librería Entidades.

Se adjunta la implementación de la clase EProducto de la librería Entidades:



Figura 9



9







La función utiliza el stored procedure spu_listarProductos para obtener la lista de
productos.

Se adjunta la implementación del Stored Procedure spu_listarProductos:

create or replace procedure spu_listarProductos (pcursor out sys_refcursor)

is

begin

open pcursor for

select id,descripcion,pu,registrado

from producto;





end;

/



El stored procedure recibe un parámetro de salida (out) de tipo sys_refcursor.

El curso es abierto dentro del stored procedure y las operaciones de fetch serán
ejecutadas en la capa de aplicación y cuya responsabilidad será cerrarlo.



10

Es recomendable que las consultas y las operaciones DML sean implementadas mediante
stored procedures ya que entrega mejor performance.



En la siguiente página se detalla la implementación de la clase y como podríamos
consumir el stored procedure presentado.



Donde:

• La función obtiene una conexión mediante la clase Conexion y con dicho objeto se

creará el objeto command (OracleCommand).

• La clase OracleCommand permite ejecutar código SQL & PLSQL directamente

desde la aplicación como stored procedures. Para esta acción se define que
ejecutaremos un stored procedure e indicamos el procedimiento almacenado a
ejecutar.

• Debido a que el stored procedure recibe un parámetro de salida creamos un objeto

de tipo OracleParameter y lo definimos que será de salida y de tipo RefCursor.

11



• El método executeNonQuery ejecuta el stored procedure y éste nos devolverá el

cursor ya abierto el cual tiene identificado el conjunto de filas a recuperar.

• Se crea el objeto DataReader mediante el valor obtenido por el cu
  • Links de descarga
http://lwp-l.com/pdf8940

Comentarios de: Implementando Aplicaciones .NET con ODP.NET & Entity Framework (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad