[ Foro de C# ]

Evitar hardcodear un id de BD

28-Sep-2015 15:48
Luis Parada
1 Respuestas

Hola, como están? voy a describir la situación y luego haré la pregunta.

Tengo dos tablas, una es TipoDeUsaurio

idTipoUsuario Descripcion

1 Experto

2 Básico

y Otra tabla llamada Usuarios

idUsuario Nombre idTipoDeUsuario

1 José 1

2 Pedro 2



Si yo quiero hacer una consulta desde el código donde quiera traer todos los usuarios donde tipo de usuario sea 2, como puedo hacer para no hardcodear el tipo de usuario.

Mi problema es porque un una DB de desarrollo el id del tipo de usuario Experto es 2 por ej. y en otra DB en testing es 4, y al pasar el códgo de un ambiente a otro tengo que cambiar el id de tipo de usuario a mano. Espero que se entienda la pregunta, desde ya muchas gracias y saludos.

Luis


30-Sep-2015 14:10
Daniel Segura (+2)

La forma mas elegante de hacer esto para mis gusto es la siguiente.  
1. Creas una clase que sea TipoDeUsuario. Esta clase tendrá Descripción e Id.
2. Sobreescribes El metodo ToString de TipoDeUsuario y devuelves en el La descripcion.
3. En tu ventana de seleccion de tipo de usuario, pones un combobox con el tipo.
4. Haces una consulta de la tabla TipoDeUsuario y vas creando un objeto por cada fila que te devuelva. Guardando cada objeto en un array de TiposDeUsuario.
5. Añades esos objetos directamente al combobox. Al habersobreescrito el ToString, en el texto del comboBox saldra la descripcion.
6. Cuando hagas la consulta de usuarios con x tipo, obtienes el objeto seleccionado del combobox, le pides el ID(Deberas tener su getter o crear una propiedad con el ID), y haces una consulta con ese ID.

De esta manera no tienes que hardcodear nada, todo lo sacas de la base de datos.  Recuerda que a la hora de obtener el Id desde el combobox, debes de castear al tipo de objeto que necesitas, en este caso TipoDeUsuario.

Si te queda alguna duda concreta postea tu codigo y vemos. Espero ser de ayuda. Saludos :D






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)