domingo, 21 de febrero de 2010

ObjectDataSource (I)

Cuando los controles de Microsoft hacen cosas solas les suelo llamar magia negra, ya que aunque puede llegar a ser muy potente, el desarrollador pierde el control de lo que sucede. Además es habitual que cuando es necesario hacer algo fuera de lo normal o se quita la magia negra o hay que dar muchas vueltas.

SQLDataSource es una de las magias negras más potentes de Microsoft, da soporte a un CRUD de una tabla en SQL Server y si lo enlazamos con un GridView se puede lograr el mantenimiento de los datos de una tabla sin picar una línea de código. El propio asistente del control genera las consultas necesarias para realizar las operaciones.

Esto es muy bonito, pero por debajo hace cosas que solo se deberían hacer para programar un prototipo. Toda la lógica de negocio debe de ir en la página, no hay separación entre la capa de vista y la de negocio, lo que dificulta la organización del código y evita la reutilización del mismo.

Muchos usuarios vieron que esta aproximación no cumplía sus expectativas, pero les gustaba la facilidad que este control asociado a otros les proporcionaba. Así nació el ObjectDataSource.

El ObjectDataSource es un control que se utiliza en los WebForms de asp.net para enlazar controles asociados a datos, como grids, combos. Por ejemplo la unión del ObjectDataSource con un GridView.

Pero este control tiene sus particularidades, algunas veces parece que los chicos de Redmond hacen las cosas raras. Por ejemplo, la gestión de excepciones con este control es un poco…. peculiar. El control no tienen un evento onError. Así que en los eventos Deleted, Updated, Inserted o Selected, debemos de añadir un código similar a este para manejarlo:

if (e.Exception != null)

    //Manejamos la excepción y después ponemos la siguiente
// línea para que se muestre el pantallazo con error. 
    e.ExceptionHandled = true;
}

Lo cierto es que hacer eso para cada evento es un poco coñazo, esta es una de las particularidades del ObjectDataSource

No hay comentarios:

Publicar un comentario