Trabajar sin DataSets

02/04/2007 - 23:54 por Pedro | Informe spam
Alguien ha visto cuando uno agrega un dataset (y sus tablas) en un
formulario visualmente la cantidad de codigo que se genera internamente en
Dataset.designer.cs?
Pregunto, es necesario todo eso para trabajar con datos. Como le hago si no
quiero trabajar con dataset o por lo menos de esa manera?

Pedro

Preguntas similare

Leer las respuestas

#6 Juan Diego Bueno
03/04/2007 - 13:35 | Informe spam
On 3 abr, 12:57, "Pedro" wrote:
> Pues es bien sencillo, en vez de usar datasets fuertemente tipados, usa
> datasets genéricos;

Es que no se pueden usar Datasets tipados a menos que sea por esa via?



Puedes probar a eliminar código a capón de esos Datasets de cosas que
no vayas a utilizar y comprobar si funciona

>ya sea insertando un control Dataset y diciendole que es un conjunto de
>datos sin tipo, o mediante código: DataSet ds = new DataSet();

> La diferencia es que tendrás que crearte tus propios dataadapters y hacer
> fill sobre ese dataset. También tendrás que usar la clase
> SqlCommandBuilder (en el caso de SQL Server) si necesitas que la base de
> datos se actualice con los cambios hechos en ese dataset o en su defecto,
> crear tus propios InsertCommand, UpdateCommand, etc... (mucho más
> complejo, e innecesario si usas esa primera opción).

Ok pero haciendolo manual, no se ahorraria muchisimo de ese codigo que
genera automaticamente el IDE? Lo has visto? Yo hice la prueba haciendo un
form de mantenimiento para una sola tabla y la cantidad de clases,
definiciones, redefiniciones, xml que vi dentro del archivito
Dataset1.designer.cs me parecio escandalosa. Sin embargo, hacerlo
manualmente como tu mismo dices debe ser mucho mas corto y por ende mas
rapido en la ejecucion.



Sí, si yo como Juanjo, al principio lo hacía así. De hecho, tardé en
conocer los datasets tipados ya que podía hacerlo todo picando código
sin problemas, pero a la hora de trabajar con Crystal Reports, ya
no me quedaron más narices ya que son los únicos que reconoce. Y no
hablemos ya con los databindings, que tres cuartos de lo mismo. Es
decir, los datasets fuertemente tipados incluyen mucho código para
ahorrarte código a ti (como indicaba Juanjo). Para operaciones muy
pequeñas, desde luego, yo uso un dataset e incluso ni eso, con
datatables se puede hacer casi de todo.

Saludos
Respuesta Responder a este mensaje
#7 Hector
03/04/2007 - 15:07 | Informe spam
Yo te aconsejo que mejor uses un ORM (Nhibernate, Cooperator).
Tengo entendido que una de las cosas que hacen es no usar datasets, quiza la
razon sea esa misma que dices, el overhead de codigo que los hace lentos.
Puede que el codigo no sea tan innecesario pero mucho depende del tipo de
aplicacion que desarrolles, pienso que para formularios de mantenimiento
simples quiza parte de ese codigo sea superfluo.
Yo he visto tambien varias personas que desaconsejan el uso de datasets.



"Pedro" wrote in message
news:
>
Pues es bien sencillo, en vez de usar datasets fuertemente tipados, usa
datasets genéricos;



Es que no se pueden usar Datasets tipados a menos que sea por esa via?


ya sea insertando un control Dataset y diciendole que es un conjunto de
datos sin tipo, o mediante código: DataSet ds = new DataSet();

La diferencia es que tendrás que crearte tus propios dataadapters y hacer
fill sobre ese dataset. También tendrás que usar la clase
SqlCommandBuilder (en el caso de SQL Server) si necesitas que la base de
datos se actualice con los cambios hechos en ese dataset o en su defecto,
crear tus propios InsertCommand, UpdateCommand, etc... (mucho más
complejo, e innecesario si usas esa primera opción).




Ok pero haciendolo manual, no se ahorraria muchisimo de ese codigo que
genera automaticamente el IDE? Lo has visto? Yo hice la prueba haciendo
un form de mantenimiento para una sola tabla y la cantidad de clases,
definiciones, redefiniciones, xml que vi dentro del archivito
Dataset1.designer.cs me parecio escandalosa. Sin embargo, hacerlo
manualmente como tu mismo dices debe ser mucho mas corto y por ende mas
rapido en la ejecucion.





Respuesta Responder a este mensaje
#8 Alfredo Novoa
03/04/2007 - 15:32 | Informe spam
On Tue, 3 Apr 2007 09:07:58 -0400, "Hector"
wrote:

Yo te aconsejo que mejor uses un ORM (Nhibernate, Cooperator).
Tengo entendido que una de las cosas que hacen es no usar datasets, quiza la
razon sea esa misma que dices, el overhead de codigo que los hace lentos.



Los datasets tipados son un ORM de esos, y los otros ORM tienen los
mismos problemas.

Puede que el codigo no sea tan innecesario pero mucho depende del tipo de
aplicacion que desarrolles, pienso que para formularios de mantenimiento
simples quiza parte de ese codigo sea superfluo.



Es superfluo para cualquier cosa.

Yo he visto tambien varias personas que desaconsejan el uso de datasets.



Y yo a muchas que desaconsejan el uso de ORM, datasets tipados
incluidos.


Saludos
Respuesta Responder a este mensaje
#9 Jose Camacho Vaca
03/04/2007 - 17:48 | Informe spam
Perdon por la intromisión, pero a que te refieres con "no hacerlo a mano" en
el caso de Crystal.

Otra duda por favor. Yo uso mucho los datasets, por las ventajas que tu
mencionas pero me extraña mucho que aunque sean fuertemente tipados: 1) no
manejan todos los tipos de datos nativos de SQLServer, 2)No en todos los
tipos tienes todos los operadores de sobrecarga. Pongo ejemplo: 1)No tienen
el tipo money, 2)Cuando en un dataset tienes un campo tipo double y le
quieres hacer un ToString() pero con formato no se puede, primero lo tienes
que meter a una variable temporal que sea tipo double y luego hacerle es
ToString() con formato.

No conocen alguna forma de que todo eso no sea tan tardado.
Gracias por sus sugerencias y un saludo.

José Camacho Vaca
Colima, MX


"[Juanjo]" wrote:



Yo pienso que si, de hecho lo he estado haciendo, aunque no se como de
eficiente o de bien.

La "unica diferencia" que hay, es que manualmente, tu tienes que comprobar
las sentencias,
comprobar los parametros, ejecutar la sentencia, controlar la conexion a la
base de datos,
recoger el resultado,etc.

De la otra forma con una "linea" de codigo haces practicamente lo mismo.

Ojo, si piensas usar crystal report y enlazarlo con la base de datos, en
este caso te recomiendo
no hacerlo a mano, o como mucho hacerlo "mixto".

Un saludo.

"Pedro" escribió en el mensaje
news:
>
> "[Juanjo]" escribió en el mensaje
> news:Od3VO$
>> Hola:
>>
>> Yo al principio pensaba como tu (aunque yo por desconocimiento, jeje)
>> luego
>
> Yo tambien por desconocimiento, soy nuevo en eso.
>
>> te das cuenta que el dataset
>> te genera el codigo para las consultas que tu necesitas (solo tienes que
>> escribir la sentencia SQL),
>> te comprueba los tipos de datos, los parametros,etc
>>
>> De todas las formas siempre puedes hacerlo tu manualmente.
>>
>
> Ok pero piensas que manualmente uno haría toooodas esas cosas que aparecen
> alli? seguro?
>
>



Respuesta Responder a este mensaje
#10 Juan Diego Bueno
03/04/2007 - 18:26 | Informe spam
On 3 abr, 17:48, Jose Camacho Vaca
wrote:
Perdon por la intromisión, pero a que te refieres con "no hacerlo a mano" en
el caso de Crystal.



Me refiero a que en Crystal, para poder usar datasets como fuente de
datos, éstos han de ser tipados. Es decir, si yo inserto un dataset
genérico, Crystal no se va a enterar de su existencia. Al ser así, si
tu quieres por ejemplo, hacer un informe basado en un filtrado por la
aplicación, si no quieres usar datasets, te quedaría el recurso de
crear una vista o tabla temporal de la que tirara el informe. A mi, ya
que uso el filtrado en la aplicación para un grid, me gusta que me
pueda servir también para el informe (no se si se ha entendido).

Otra duda por favor. Yo uso mucho los datasets, por las ventajas que tu
mencionas pero me extraña mucho que aunque sean fuertemente tipados: 1) no
manejan todos los tipos de datos nativos de SQLServer, 2)No en todos los
tipos tienes todos los operadores de sobrecarga. Pongo ejemplo: 1)No tienen
el tipo money, 2)Cuando en un dataset tienes un campo tipo double y le
quieres hacer un ToString() pero con formato no se puede, primero lo tienes
que meter a una variable temporal que sea tipo double y luego hacerle es
ToString() con formato.



Lo de "fuertemente tipados" es una traducción literal mía de "strongly
typed datasets" de un artículo que leí cuando comenzaba con crystal
y .net que explicaba como poder hacer que tiraran de datasets en vez
de directamente de la base de datos. Lo de fuertemente tipados viene,
si no me equivoco, por lo específicos que son. Cuando tu creas un
dataset de este tipo, el dataadapter es específico de esa tabla
(tableadapter), etc... (Yo es que no se explicar muy bien esto, pero
lee más posts que hay gente que lo explica mejor que yo)

No conocen alguna forma de que todo eso no sea tan tardado.
Gracias por sus sugerencias y un saludo.



Lo de la velocidad a la hora de tratar con los datos es una cuestión
de trabajar con los registros justos. Por ejemplo, si sólo voy a
trabajar con un registro, lo suyo es que el dataset sólo contenga ese
registro. Si voy a llenar un combo desde una tabla, y esta tiene más
campos de los que voy a necesitar en mi combo para el valuemember y el
displaymember, bastaría con usar una vista que sólo contuviera los dos
campos necesarios para evitar traer todos los demás, etc... De todas
maneras, yo no trabajo con grandes proyectos y quizás haya gente que
te pueda aportar mucho más al respecto.

Y si no quieres trabajar con datasets, pues recurre a datareaders para
leer datos y a commands e incluso procedimientos almacenados para
manipularlos. Las posibilidades son muchas y variadas a mi juicio.
Mira, que yo sepa en Java, sólo dispones de un objeto cursor llamado
resultset para recorrer los registros y poco más, lo cual no quiere
decir que esté mal, pero que puede que sea insuficiente para las
necesidades de un desarrollador en un momento dado.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida