ASP.NET - Dudas sobre las 3 capas

 
Vista:

Dudas sobre las 3 capas

Publicado por pableras (5 intervenciones) el 26/01/2007 21:56:56
Hola, k tal ???

Tengo algunas dudas con lo de las "tres capas". Si mirais más abajo os he puesto mi código. Faltan cosas por desarrollar, pero vale para explicar mis dudas.

1) Mi primera duda es la utilización de transacciones. Sé que a los métodos Insert, Update, Delete, etc les tengo que pasar por parámetros la conexión y la transacción para poder meter estos métodos en la transacción.
Si miras cómo lo tengo puesto ahora, tengo declarada en la BR la conexión y la transacción...es correcto ??? es que me da la impresión de que lo correcto sería no tener esas 2 cosas declaradas en el BR sino en el DA, pero tampoco tengo claro cómo sería...me podríais poner algo de código (utilizando mi ejemplo) de cómo debería ser ???

2) Otra duda que tengo es que en el método "static" Insert del BR, me funciona la línea que está sin comentar, pero si comento esa y descomento la segunda me da un fallo (en la segunda): "BRUsuario._objDatos' denota 'campo', cuando se esperaba 'clase' " ... porqué me dice eso ?? sin embargo me funciona si utilizo la primera línea, pero no kiero utilizar la esa línea porque para algo me creé el _objDatos ... qué debo hacer ???

Acepto sugerencias, opiniones, qué cosas cambiaríais, etc.

Muchas graciasssssssss

::::: BRUsuario.cs :::::

private DAUsuario _objDatos;
private string _id;
private string _nick;
private string _clave;
private bool _genero; // true=hombre
private OleDbConnection _conn;
private OleDbTransaction _trn;

public string Id{get{return _id;}set{_id=value;}}
public string Nick{get{return _nick;}set{_nick=value;}}
public string Clave{get{return _clave;}set{_clave=value;}}
public bool Genero{get{return _genero;}set{_genero=value;}}
public OleDbConnection Conexion{get{return _conn;}set{_conn=value;}}
public OleDbTransaction Transaccion{get{return _trn;}set{_trn=value;}}

public BRUsuario()
{
_objDatos=new DAUsuario();
_nick=string.Empty;
_clave=string.Empty;
_genero=true;
}

public BRUsuario(string nick,string clave,bool genero)
{
_objDatos=new DAUsuario();
_nick=nick;
_clave=clave;
_genero=genero;
}

public DataTable SelectAll()
{
return _objDatos.SelectAll();
}

public string Insert()
{
return _objDatos.Insert(_nick,_clave,_genero,_conn,_trn);
}

public static string Insert(string nick,string clave,bool genero,OleDbConnection conn,OleDbTransaction trn)
{
return new DAUsuario().Insert(nick,clave,genero,conn,trn);
// _objDatos.Insert(nick,clave,genero,conn,trn);

}

-----------------------------------------------------------------------

::::: DAUsuario.cs :::::

public DAUsuario()
{
//
// TODO: agregar aquí la lógica del constructor
//
}

public DataTable SelectAll()
{
return new DataTable(); // Sin implementar
}

public string Insert(string nick,string clave,bool genero,OleDbConnection conn,OleDbTransaction trn)
{
return string.Empty; // Sin implementar...devolverá el código (string) del nuevo usuario creado.
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 56
Bronce
Ha mantenido su posición en ASP.NET (en relación al último mes)
Gráfica de ASP.NET

RE:Dudas sobre las 3 capas

Publicado por Yamil Bracho (1136 intervenciones) el 29/01/2007 13:11:31
1) Me parece mejor idea manejar las transacciones en el SP que hace la operacion de actualiacion a la BD y correcto, esto deberia estar en la capa DA y no en la BR
2) El problema que tienes es que _objDatos es una varible de instancia y como estas llamando a un metodo estatico, esta no ha sido creada. Por eso es que te funciona la linea sin comentar, porque creas la instancia en el momento de la clase DAUsuario.
Pudieras seguir usando o que estas usando o declarar la variable _objDatos; cmo static y como un singleton.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar