Visual Basic.NET - Método Select genérico

 
Vista:

Método Select genérico

Publicado por Pableras (3 intervenciones) el 08/02/2007 13:46:56
Hola, qué tal ???

Estoy haciendo una aplicación de prueba usando la estructura que llaman de las "3 capas" (negocio, datos y presentación).

Si no sabes nada de lo de las "3 capas" casi mejor no sigas leyendo porque no me vas a entender.

Empiezo:

Tengo 2 tablas en mi pequeña aplicacación: Usuarios y Productos. En la primera aparecen los datos del usuario (nick, nombre, apellidos, fecha de nacimiento, etc) y en la segunda los productos comprados por este usuario (id, idProducto, nick, unidades, fechaCompra, horaCompra)

Resumiendo tengo estas tablas en la base de datos:

- Usuarios: Nick, Nombre, Apellidos, FechaNac.
- Productos: Id, IdProducto, Nick, Unidades, FechaCompra, HoraCompra (debería de haber una tabla, DatosProductos, que a través del IdProducto se relacionara con Productos, y nos diera todos los datos del producto en concreto: nombreProducto, precio, udsStock, etc, ... sería así: Usuarios - Productos - DatosProductos
, pero de momento no me hace falta para lo que quiero probar.)

Ambas tablas se relacionan por el nick (las tablas Usuarios y Productos digo).

Por otra parte, tengo en mi capa de negocio estos 2 cs's: BRUsuario.cs y BRProducto.cs.

En BRUsuario tengo los métodos SelectAll, Insert, Update con sus parámetros correspondientes (los que los necesiten). SelectAll selecciona todos los registros de la tabla Usuarios; Insert inserta un nuevo registro en la tabla y Update actualiza un registro.

La mismos métodos los tiene también el BRProducto, más el de SelectByNick(string nick)

Preguntas:

1) Si yo en una pantalla quiero mostrar los siguientes datos: Nombre, Apellidos, y más abajo la relación de los productos de ese usuario: IdProducto y Uds nada más (de la tabla Productos)??? Me tendría que crear otro "BR", llamémoslo BRMixto(por tener datos de ambas tablas) que tuviera los siguientes atributos: Nombre, Apellidos y un tercer campo que se llamase por ejemplo ProductosUsuario que fuera una colección de BRProducto's que se llenaría mediante new BRProducto.SelectByNick(nick) ??....no sé si me explico, para que en esta clase puedan desglosar todos los productos comprados por un usuario.

Sería algo así ???

2) Me gustaría encontrar una forma de no siempre traerme los mismos datos. Me explico: crear un método al que yo le pueda decir qué campos de cada tabla me quiero traer porque por ejemplo tengo el SelectAll en ambos BR's que traen todos los campos de sus respectivas tablas, pero para alguna pantalla en vez de traerme todos los campos sólo querré el nombre y apellidos (para BRUsuario) o el id del producto (para BRProducto), etc

Por ejemplo en la pregunta 1 me traía todos los productos mediante el new BRProducto.SelectByNick(nick), pero este método me trae todos los campos de Productos y sólo quiero el IdProducto y las Uds (para el ejemplo que ponía)

Había pensado algo así: un método Select (o Find,o Filter) en cada BR que fuera, por ejemplo, Select (campos a traer, filtro)...lo de "campos a traer" serían los campos que van después de un Select en una sentencia sql, y el "filtro" lo que va después del Where (nick='pepito',nombre='Jose', etc) ... algo así, que fuera un poco genérico y que cada vez que me quiero traer unos campos diferentes no tenga que crearme otro método.

Lo digo para no traerme información que no voy a necesitar (no traerme campos que no voy a utilizar)

Si tuvierais algún ejemplo que simplificase en un método esto que os cuento de las búsquedas os lo agradecería, y que fuese un poco "profesional", o alguna sugerencia vuestra para mi caso concreto.

3) Mi BRUsuario tiene estos atributos: ( está en c# sorry )

private DAUsuario _objDatos;
private string _id;
private string _nick;
private string _clave;
private bool _genero; // true=hombre

En la clase DAUsuario es donde hago todas las operaciones con bases de datos (capa de datos).

Sería lógico meter en un BR una referencia a otro BR ??? lo que comentaba antes: si después del atributo _genero añado otro que sea una colección de productos (new BRProducto.SelectByNick(_nick) ) .... sería correcto? o no es lógico llamar a una clase BR dentro de otra BR ??? a mí sí me lo parece pero no sé si se suele hacer así.

Agradecería cualquier tipo de documentación sobre cualquiera de estos apartados.

Muuuuuuuuuuchas gracias :-D
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