Serializar Objetos en formato XML y enviar a SQL SERVER 2008

28/04/2010 - 16:26 por Daniel Maldonado | Informe spam
Estimados, estoy diseñando unos objetos con c# y necesito serializarlos para
enviarlos
a un Store Procedure en SQL Server.

Por Favor quien tiene algo implementado de esta forma ?.

Necesito una soga con este tema.

Probé varias cosas de la Web y ningúna me funciona.

Por favor.

Atte. Daniel.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
28/04/2010 - 16:53 | Informe spam
"Daniel Maldonado" wrote in message
news:OhCA$
Estimados, estoy diseñando unos objetos con c# y necesito serializarlos
para
enviarlos
a un Store Procedure en SQL Server.



Bueno, son dos temas totalmente independientes: Por una parte está la
pregunta de cómo se serializa un objeto para dar lugar a XML. Para esto se
puede usar la clase XmlSerializer.
El segundo problema sería cómo llamar a un procedimiento almacenado
pasándole un parámetro (que en este caso sería el XML pero a efectos de
hacer la llamada desde C# daría igual que fuera cualquier otro tipo de
información). Para esto se usa un SqlCommand junto con un SqlParameter.

¿Con cuál de las dos partes estás atascado? ¿Puedes concretar un poco más
en dónde encuentras la dificultad?
Respuesta Responder a este mensaje
#2 Hernan
28/04/2010 - 18:20 | Informe spam
On 28 abr, 18:01, "Daniel Maldonado" wrote:
Específicamente estoy trabajando los objetos de mi aplicación hasta el momento de una forma
muy CAVERNICOLA diría. porque por ejemplo
si tengo un objeto que tiene Cabecera y detalle estoy enviando por un lado la cabecera y por otro
lado el detalle cuando talvez podría serializar el objeto
y enviar las dos cosas serializando el objeto XML y desde el otro lado descompongo ese XML
y grabo cabecera y detalle de un solo tiro. Pero bueno, estoy intentando cambiar eso.



Sin comentar tu diseño, ¿realmente necesitas que el tipo de datos sea
sqlxml? Debería ser
suficiente con un varchar(max).
También te recomiendo que pruebes primero si la serialización/
deserialización está bien hecha,
obviando el sqlserver en tus pruebas. Serializa a un string y
reconstruyes el objeto desde ahí.

-H.
Respuesta Responder a este mensaje
#3 Daniel Maldonado
28/04/2010 - 18:33 | Informe spam
Si, Hernan. Coincido con vos.

También se puede utilizar una variable del tipo text.

El tema es que por algo existe el tipo de Datos SqlXML en .NET

Debe tener sus ventajas respecto del varchar. Sabiendo que el varchar tiene
como máximo creo que 8000 caracteres.

si son XML grandes, objetos grandes voy a tener problemas.

por eso me gustaría que alguién comparta ó me oriente mejor respecto de
serializar/desserializar objetos.

Sobre todo cuando quiero trabajar con SQL 2008.

Seguramente alguien tiene hecho algo ó algún link que me oriente bien.

Saludos.

Daniel.

P/D: ley del último recurso utilizar una variable varchar ó text. y si no se
puede, no se puede.



"Hernan" escribió en el mensaje
news:
On 28 abr, 18:01, "Daniel Maldonado" wrote:
Específicamente estoy trabajando los objetos de mi aplicación hasta el
momento de una forma
muy CAVERNICOLA diría. porque por ejemplo
si tengo un objeto que tiene Cabecera y detalle estoy enviando por un lado
la cabecera y por otro
lado el detalle cuando talvez podría serializar el objeto
y enviar las dos cosas serializando el objeto XML y desde el otro lado
descompongo ese XML
y grabo cabecera y detalle de un solo tiro. Pero bueno, estoy intentando
cambiar eso.



Sin comentar tu diseño, ¿realmente necesitas que el tipo de datos sea
sqlxml? Debería ser
suficiente con un varchar(max).
También te recomiendo que pruebes primero si la serialización/
deserialización está bien hecha,
obviando el sqlserver en tus pruebas. Serializa a un string y
reconstruyes el objeto desde ahí.

-H.
Respuesta Responder a este mensaje
#4 Hernan
29/04/2010 - 13:03 | Informe spam
No cuestiono que exista para algo; solo dudo que sea lo que tu
necesitas ;-)
Y no lo necesitas porque, entre otras cosas, no creo que te interese a
validar
el XML de salida de la serialización contra un XSD; vamos, que eso no
lo hace
nadie.

varchar(max) permite superar el límite de los 8000, y eso fue lo que
te sugerí.
El tipo text es obsoleto.

Si lo único que necesitas es implementar persistencia, tampoco es
necesario
que la serialización sea XML. El BinaryFormatter es mas rápido y mas
compacto.
Pero en este caso la columna del sqlserver sería varbinary(max).


On 28 abr, 18:33, "Daniel Maldonado" wrote:
Si, Hernan. Coincido con vos.

También se puede utilizar una variable del tipo text.

El tema es que por algo existe el tipo de Datos SqlXML en .NET

Debe tener sus ventajas respecto del varchar. Sabiendo que el varchar tiene
como máximo creo que 8000 caracteres.

si son XML grandes, objetos grandes voy a tener problemas.

por eso me gustaría que alguién comparta ó me oriente mejor respecto de
serializar/desserializar objetos.

Sobre todo cuando quiero trabajar con SQL 2008.

Seguramente alguien tiene hecho algo ó algún link que me oriente bien.

Saludos.

Daniel.

P/D: ley del último recurso utilizar una variable varchar ó text. y si no se
puede, no se puede.

"Hernan" escribió en el mensajenews:
On 28 abr, 18:01, "Daniel Maldonado" wrote:

> Específicamente estoy trabajando los objetos de mi aplicación hasta el
> momento de una forma
> muy CAVERNICOLA diría. porque por ejemplo
> si tengo un objeto que tiene Cabecera y detalle estoy enviando por un lado
> la cabecera y por otro
> lado el detalle cuando talvez podría serializar el objeto
> y enviar las dos cosas serializando el objeto XML y desde el otro lado
> descompongo ese XML
> y grabo cabecera y detalle de un solo tiro. Pero bueno, estoy intentando
> cambiar eso.

Sin comentar tu diseño, ¿realmente necesitas que el tipo de datos sea
sqlxml? Debería ser
suficiente con un varchar(max).
También te recomiendo que pruebes primero si la serialización/
deserialización está bien hecha,
obviando el sqlserver en tus pruebas. Serializa a un string y
reconstruyes el objeto desde ahí.

-H.
Respuesta Responder a este mensaje
#5 Daniel Maldonado
29/04/2010 - 13:13 | Informe spam
Si Hernan. lo voy a tener en cuenta.

Serialización binaria. si, también.

Comparto contigo.

Lo extraño es que no consigo encontrar un ejemplo completo de
serializar/desserializar con .NET y SQL

manejando por supuesto el tipo de parametro SQLXml.

Hasta ví por ahí un SQLXMLCommand también.

hay tanto en .NET y muchas cosas sirven para lo mismo que realmente te
confunde.

hay tanto.

Saludos Hernán.

Muchas gracias por tu comentario.

Atte. Daniel.



"Hernan" escribió en el mensaje
news:
No cuestiono que exista para algo; solo dudo que sea lo que tu
necesitas ;-)
Y no lo necesitas porque, entre otras cosas, no creo que te interese a
validar
el XML de salida de la serialización contra un XSD; vamos, que eso no
lo hace
nadie.

varchar(max) permite superar el límite de los 8000, y eso fue lo que
te sugerí.
El tipo text es obsoleto.

Si lo único que necesitas es implementar persistencia, tampoco es
necesario
que la serialización sea XML. El BinaryFormatter es mas rápido y mas
compacto.
Pero en este caso la columna del sqlserver sería varbinary(max).


On 28 abr, 18:33, "Daniel Maldonado" wrote:
Si, Hernan. Coincido con vos.

También se puede utilizar una variable del tipo text.

El tema es que por algo existe el tipo de Datos SqlXML en .NET

Debe tener sus ventajas respecto del varchar. Sabiendo que el varchar
tiene
como máximo creo que 8000 caracteres.

si son XML grandes, objetos grandes voy a tener problemas.

por eso me gustaría que alguién comparta ó me oriente mejor respecto de
serializar/desserializar objetos.

Sobre todo cuando quiero trabajar con SQL 2008.

Seguramente alguien tiene hecho algo ó algún link que me oriente bien.

Saludos.

Daniel.

P/D: ley del último recurso utilizar una variable varchar ó text. y si no
se
puede, no se puede.

"Hernan" escribió en el
mensajenews:
On 28 abr, 18:01, "Daniel Maldonado" wrote:

> Específicamente estoy trabajando los objetos de mi aplicación hasta el
> momento de una forma
> muy CAVERNICOLA diría. porque por ejemplo
> si tengo un objeto que tiene Cabecera y detalle estoy enviando por un
> lado
> la cabecera y por otro
> lado el detalle cuando talvez podría serializar el objeto
> y enviar las dos cosas serializando el objeto XML y desde el otro lado
> descompongo ese XML
> y grabo cabecera y detalle de un solo tiro. Pero bueno, estoy intentando
> cambiar eso.

Sin comentar tu diseño, ¿realmente necesitas que el tipo de datos sea
sqlxml? Debería ser
suficiente con un varchar(max).
También te recomiendo que pruebes primero si la serialización/
deserialización está bien hecha,
obviando el sqlserver en tus pruebas. Serializa a un string y
reconstruyes el objeto desde ahí.

-H.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida