Visual CSharp .NET - Dudas con 3 capas

 
Vista:

Dudas con 3 capas

Publicado por pableras (3 intervenciones) el 26/01/2007 21:54:41
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

RE:Dudas con 3 capas

Publicado por Omar Castro (8 intervenciones) el 28/01/2007 12:50:39
Mira, la verdad no le entiendo bien a tu codigo, pero tu primera pregunta, pues la verdad, es depende de que es lo que quieres hacer con la primera clase, y de la segunda pregunta, la verdad no tengo idea de lo que intentas, pero seria probable que el problema lo tengas porque no le pones que regrese nada?
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

RE:Dudas con 3 capas

Publicado por belsai (14 intervenciones) el 15/02/2007 11:13:58
el modelo 3 capas es:
-Interfaz
-Reglas de negocio
-Modelo de datos

El interfaz son las pantallas, cada vez que lanzas un evento llama a la Regla de negocio correspondiente, donde se controlan las transacciones y las conexiones. Y es la regla de negocio quien llama a la clase que es la que hace la consulta directa a la base de datos.

De esta forma consigues separar el interfaz, de la lógica de negocio y esta a su vez de los datos que maneja.

Espero haberte aclarado algo.

Ah, y con respecto a la segunda pregunta, todo lo que declares como estático, debe ir dentro de una clase estática, como su nombre indica, es estático, no tiene estado, no es necesario crear la instancia a través del constructor. No he visto tu código, pero probablemente ese sea el error.

Saludos
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