Foros del Web » Programación para mayores de 30 ;) » .NET »

Generic Data Access Layer

Estas en el tema de Generic Data Access Layer en el foro de .NET en Foros del Web. Visual Studio 2005 beta 2 Framework 2.0 Problema: Crear clase Base para acceso a datos generica (se usa el namespace common System.Data.Common) ================================================== ================================================== === ...
  #1 (permalink)  
Antiguo 09/06/2005, 20:00
 
Fecha de Ingreso: octubre-2003
Ubicación: Los Mochis, México.
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 0
Generic Data Access Layer

Visual Studio 2005 beta 2 Framework 2.0
Problema: Crear clase Base para acceso a datos generica (se usa el namespace common System.Data.Common)
================================================== ================================================== ===
A partir del namespace System.Data.Common se diseña una clase que permite generar objetos
desde el objeto DbProviderFactory para cada Proveedor de acceso a datos.

De esta manera es posible crear objetos como SqlConnection, OleDbConnection, etc...pero no
explicitamente identificados de esa manera.

Ejemplo:

DbProviderFactory dpf = DbProviderFactories.GetFactory(DataProviderName);
DbConnection dbConn= dpf.CreateConnection();

Al igual que esos objetos se crea un Adaptador que a este se le definen cada uno de los
commandos que llevara a cabo con un objeto DbCommand.

El problema aqui es que puesto que el Adaptador es generico no es posible utilizarlo para
diferentes Tablas, vistas, etc...de una manera mas llana seria decir por ejemplo que el
comando Select del Adaptador creado para la tabla Clientes no es el mismo que el que se crea
para la tabla Ordenes.

Mas que nada me gustaria conocer una arquitectura en ese sentido, hasta el momento la unica
solucion no tan compleja que tengo es crear una clase derivada de la clase base que implemente
por ejemplo un metodo SetUpCommands por llamarlo de alguna manera, de tal forma que sea el
encargado de crear los comandos, definiendo por ejemplo, si es comando de tipo Texto, un
StoreProcedure, si lleva parametros, etc. ademas del string de SQL estandar a que estara ligado.

Ejemplo general de diseño de arquitectura del DAL

ClaseBaseDAL {
//propiedades o variables
strSelCmd = "" //variable que almacenara el comando de seleccion para clase derivada
strDelCmd = ""
strInsCmd = ""
strUpdCmd = ""
// metodos
.SetUpConnection() // encargado de crear el objeto para la conexion dependiendo del provider elegido
.SetUpCommands() // crea un objeto comando del tipo de provider elegido. Metodo implementado en la clase derivada para asignar su correspondiente comando
.SetUpAdapter() // Crea un objeto adapter
...etc
}

ClienteDAL : ClaseBaseDAL {
//en esta clase se implementa el metodo SetUpCommands() y SetUpAdapter()
//para definirlos en funcion de la entidad (en este caso es Cliente)

}

Es por eso que me interesa crear una arquitectura mas generica para no tener que estar generando una
clase DAL para cada Entidad.

Alguna sugerencia?...


Todo esto sin partir de la Interfaz que es implementada por los diferentes proveedores de datos.
IDbConnection
IDbcommand, etc...
================================================== =================================================

Articulos de referencia

http://www.codeguru.com/Csharp/.NET/...cle.php/c9373/

Gracias!
__________________
Te amo flakita (jrk)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:48.