Foros del Web » Programando para Internet » ASPX (.net) »

Dataset - User Interface - Capas

Estas en el tema de Dataset - User Interface - Capas en el foro de ASPX (.net) en Foros del Web. Gente, A ver si me pueden ayudar con lo siguiente: Tengo un proyecto en capas. UI, DAL, BLL, BIZ. Se me planteó una duda respecto ...
  #1 (permalink)  
Antiguo 27/11/2009, 10:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Información Dataset - User Interface - Capas

Gente,

A ver si me pueden ayudar con lo siguiente:

Tengo un proyecto en capas. UI, DAL, BLL, BIZ. Se me planteó una duda respecto a como pasar datos desde la DAL a la UI. Es decir, tengo registros en una base SQL de clientes por ejemplo. Si quiero modificar ese cliente hago una consulta a la base y ahi empiezan mis dudas:

1-Ya que recupero un solo registro de la base, vale la pena que use un Dataset o tendría que usar otra estructura?

2-La interfaz es una pagina con un par de textbox. Para cargar los textbox hoy estoy pasando un dataset desde la DAL a la UI. En la UI creo otro dataset y asigno a cada textbox el item que corresponda. Está bien así o hay alguna forma más apropiada?

Cualquier duda y comentario serán bienvenidos

Abrazos
  #2 (permalink)  
Antiguo 27/11/2009, 11:02
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Respuesta: Dataset - User Interface - Capas

Hola, yo te recomendaría que usaras clases en vez de datasets, los datasets son muy lentos, puedes tener una capa de Entities en donde tengs todas las clases, otra capa de Acceso a datos donde lleves las clases o listas de clases y ya... que te parece?
  #3 (permalink)  
Antiguo 27/11/2009, 11:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Información Respuesta: Dataset - User Interface - Capas

Eso es lo que creo que debo hacer. En la capa BIZ tengo las entities.

Mi capa de acceso a datos tengo esto por ejemplo:

public static DataSet BuscarEmpleadoUpdate(string usuario)
{
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["tracker"].ConnectionString);
cnn.Open();

try
{
SqlCommand cmd = new SqlCommand("SelectEmpleado", cnn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@Usuario", usuario));

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);

return ds;

}
catch { throw; }
finally { cnn.Close(); }

}

como haría para asignar directo a la clase?

Muchas Gracias
  #4 (permalink)  
Antiguo 27/11/2009, 11:35
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Respuesta: Dataset - User Interface - Capas

Primero ejecutas un datareader, el cual te regresará n registros con n columnas cada uno, en el caso de que sea 1 solo registro, llenar un clase extrayendo los valores de datareader, o en el caso de que sean varios registros, creas una lista de clases e igual extraes los valores del datareader llenando la lista de clases..
  #5 (permalink)  
Antiguo 30/11/2009, 11:16
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Dataset - User Interface - Capas

Quizá este link pueda ayudarte

http://tydw.wordpress.com/2008/08/14...des-1ra-parte/
__________________
Eduardo Peredo
Wigoin
  #6 (permalink)  
Antiguo 30/11/2009, 16:25
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dataset - User Interface - Capas

Muchas Gracias por su ayuda....la he implementado y funciona bien...ahora 2 dudas y no molesto más..por hoy

1- Para cargar grillas estoy pasando el dataset directamente que resulta de una consulta a la base y haciendo un databind en la UI. Es conveniente usar una lista de clases en vez del dataset?

2- Tengo una tabla de Reclamos que está formada por varios campos de ID que referencian a otras tablas (EJ IDCliente, IDEmpleado, etc).
Cuando recupero datos de esa tabla hago joins con las tablas por ejemplo cliente o empleado para recuperar el nombre del cliente o empleado que es lo que me interesa mostrar en vez del idCLiente o idEmpleado. Como se imaginarán, la clase Reclamo no tiene una propiedad NombreCliente sino que tiene IDCliente. Entonces cuando recupero un registro de la tabla Reclamos (EJ...IDReclamo, NombreCliente), la entidad reclamo tiene IDReclamo pero no tiene NombreCliente (tiene IDCLiente). En este caso que es lo mejor para hacer? Crear una entidad con los campos correspondientes al resultado de la consulta a la base o pasar los datos de otra forma (por ahora cargo un dataset y se lo mando a la UI)??

Espero haber sido claro.

Muchas gracias por su ayuda
  #7 (permalink)  
Antiguo 30/11/2009, 16:42
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Dataset - User Interface - Capas

Para arquitectura en capas los datasets no suelen ser una buena idea. Te dejo un post de 3 partes donde detallan esto de forma práctica midiendo rendimiento usando Datasets y DataReader con Clases.

Parte 1
Parte 2
Parte 3

__________________
Eduardo Peredo
Wigoin
  #8 (permalink)  
Antiguo 02/12/2009, 09:15
 
Fecha de Ingreso: abril-2001
Mensajes: 293
Antigüedad: 23 años
Puntos: 0
Respuesta: Dataset - User Interface - Capas

excelente el articulo lo unico que me quedo dando vueltas es que actualmente utilizo dataset tipados, segun el articulo son nefastos para la eficiencias, pero del punto de vista implementacion es mucho mas sencillo y visual, habra alguna forma de optimizar los dataset tipados o tipificados??, personalmente siempre he preferido utilizar codigos optimos pero soy novato en estos temas y me es mucho mas facil utilizar los dataset tipados!, ya que ademas de leer escribimos eliminamos o modificamos datos.

saludos!!!

Última edición por cmunozp; 02/12/2009 a las 10:16
  #9 (permalink)  
Antiguo 05/12/2009, 15:41
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dataset - User Interface - Capas

Gente,

Tomando sus consejos estoy tratando de cargar un gridview desde la colección pero no lo estoy consiguiendo. me podrían dar una mano por favor?

Gracias
  #10 (permalink)  
Antiguo 06/12/2009, 10:15
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Dataset - User Interface - Capas

Pero te lanza algún error? Exactamente cual es tu duda?

__________________
Eduardo Peredo
Wigoin
  #11 (permalink)  
Antiguo 07/12/2009, 09:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Información Respuesta: Dataset - User Interface - Capas

Cree la colección correctamente pero no me doy cuenta como hacer para cargar los datos de la colección en el gridview. En realidad más que un error tengo ignorancia. Es por eso que requiero de su colaboración.

Muchas gracias.

  #12 (permalink)  
Antiguo 07/12/2009, 09:40
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Dataset - User Interface - Capas

Pues tendrás que usar el objeto SqlDataReader (suponiendo que trabajas con SQL Server).
Te dejo este link con un ejemplo de como hacerlo.
http://eperedo.comze.com/2009/10/man...-net-parte-ii/

Espero te sirva, saludos.
__________________
Eduardo Peredo
Wigoin
  #13 (permalink)  
Antiguo 07/12/2009, 13:00
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dataset - User Interface - Capas

Muy bueno tu blog.

Gracias a tu ayuda note que solo me faltaba definir a la colección como el dataosure, el resto estaba ok.

Ahora abusando de tu conocimiento, me surgio la siguiente duda:

Tengo la clase cliente con los campos id, nombre, apellido, domicilio.
Y estoy mostrando los clientes en una gridview con los campos ID, Cliente, Domicilio, donde Cliente es Nombre + Apellido.

El problema es como meto en la columna Cliente de la gridview los campos nombre y apellido concatenados? Tengo que crear otra clase con los mismos campos de la gridview o tengo que concatenar esos campos de alguna forma???

Gracias Miles!
  #14 (permalink)  
Antiguo 07/12/2009, 15:11
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Dataset - User Interface - Capas

Una solución es crear una propiedad Cliente:
Código vb.net:
Ver original
  1. Public Property Cliente As String
  2. Get
  3.       Return vcliente
  4. End Get
  5. Set(ByVal value As String)
  6.    vcliente = value
  7. End Set
  8. End Property

Y usas esa propiedad para enlazarla con el campo concatenado(Nombre+Apellido) que traes de la BD.
Espero te ayude
__________________
Eduardo Peredo
Wigoin
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:35.