Mantenimiento Maestro-Detalle en WindowsForms con LINQ Octubre 29, 2008
Posted by elmercarias in .Net, LINQ.Tags: .Net, linq
trackback
Siguiendo con lo del Mantenimiento en Windows Forms con LINQ, en esta entrada veremos como crear un Maestro-Detalle con LINQ, para este ejemplo utilizaremos de base el Proyecto creado en el posteo anterior “Mantenimiento en WindowsForms con LINQ”.
1) Abrir la Forma “Form1″ del Mantenimiento de Regiones, y abrir la ventana de “Data Sources”, donde buscaremos bajo Region la Relación con la Entidad Territories.
2) Arrastramos la Entidad Territories al formulario y nos creará automaticamente un Grid para los Datos de la Entidad Territories.
3) Al ver las columnas creadas en el Grid, podemos observar que creo una columna llamada Region, esta columna hace referencia a la relación que existe de la Entidad Territories con la Entidad Padre(que para el caso es Region), y como esa propiedad no la necesitamos ver en este Mantenimiento ya que en el Grid Superior tenemos los datos de la Entidad Region.
Quitamos la Columna Region del Grid de Territories y Listo, ya tenemos nuestro Mantemiento Maestro-Detalle funcionando.
4) Ejecutamos la aplicacion y al movernos de fila en el Grid de la Entidad Region, automaticamente se filtran en el Grid de la Entidad Territories los registros correspondientes.
Se preguntarán como funcionan los querys que automaticamente se ejecutan, pues les comento que los querys ejecutados sobre la tabla Territories son enviados con filtro de la columna RegionID, eso significa que si no nos movemos sobre alguna Region especifica no recuperara los Territorios de esa Region seleccionada. Esto nos dice que el rendimiento es muy bueno.
¿Que pasa si quieres agregar una barra de Navegación(BindingNavigator) para la Entidad Territories?
Deberás agregarla manualmente y asociarla al origen de datos del Grid de la Entidad Terrotories que es “TerritoriesBindingSource” y la recomendación que te hago es que no agregues el botón de Guardar en esta Barra ya que el Guardar que creamos para la Region incluye el guardado en la entidad Territories.
Si quieres bajarte el codigo fuente de este proyecto hazlo aqui.
Elmer Carías
“El fracaso tiene mil excusas, el éxito no requiere explicación”






Me ha gustado tu ejemplo. Pero me gustaría saber como se resuelve el siguiente problema: Un Territorio tiene varios ríos; un río puede descurrir por varios territorios. Aquí no hay una relación de 1 a varios, sino de varios a varios, por lo que se requiere un archivo intermedio que relacione ambos archivos (junction table) ya que la clave del río no puede ir en el mismo fichero del territorio pues puede haber varios rios en el mismo territorio. En el caso presentado arriba en el blog el código de la región está en el fichero de Territorio.
La consulta sería que al seleccionar un Territorio se presentaran los ríos de este territorio (y viceversa).
Muchas gracias,
[...] Para este ejemplo utilizaremos de base el Proyecto creado en el posteo anterior de LINQ Mantenimiento Maestro-Detalle en WindowsForms con LINQ. [...]