Hola;
Tengo una duda relacionada con la implementación en "n" capas.
Supongamos una capa Negocio y una capa Datos, y un objeto Maestro/Detalle
como podria ser el caso de una Factura
FACTURAS
NroFactura
Fecha
Renglones //coleccion generic de Detalle de Factura
Segun lo que entiendo, la separación en capas me permite lograr que desde
Interfaz de usuario, simplemente llamar a Negocio.Guardar (oFactura) y nada
mas.
Desde Negocio llamo a mi capa de datos, lo que en pseudocodigo queda algo
como:
<Inicio>
<Transaction>
Datos.Factura.Guardar (oFactura) //guardo el encabezado
Datos.DetalleFactura.Guardar (oFactura.Renglones) //guardo el
detalle
<FinTransaction>
<Fin>
La Capa de Datos es la que se encarga de llamar a los Command
correspondientes segun el proveedor de datos que este trabajando (SQL,
Oracle, etc.)
Las preguntas son (por fin!),
¿En qué momento se debe abrir la conexion? Desde la capa de Negocio o cada
objeto de Datos debe abrir/cerrar su conexion?
¿Como es en este caso el manejo de transacciones? ¿Debe ser manejada desde
la capa de Negocios? ¿Esto no hace que no sea independiente del motor de
base de datos? Es decir, desde mi capa de negocio debo tener una Refencia a
System.Data.dll. .? o solamente a MiCapaDatos.dll
Sé muy bien que no hay soluciones únicas, ni respuestas mágicas, solo
pretendo aclarar un poco más la situación.
Muchas Gracias
Guillermo
Leer las respuestas