En primer lugar, existe la ruta obvia de simplemente crear una estructura relacional y asignar el objeto a los campos en la base de datos.
En segundo lugar, si tiene un objeto que es serializable, puede almacenarlo en el servidor SQL. Lo he hecho ocasionalmente, y he usado el tipo de datos de texto en SQL Server para almacenar el XML.
Opinión: Prefiero almacenar objetos serializados como XML en lugar de datos binarios. ¿Por qué? Como puede leer realmente lo que hay allí (para la depuración), y en SQL Server, puede usar XQuery para seleccionar datos del objeto serializado. Según mi experiencia, la ganancia de rendimiento del uso de datos binarios no valdrá la pena en comparación con tener datos que es más fácil de depurar y se puede usar de una manera psicorelacional. Eche un vistazo al SQL Server's XQuery capabilities. Incluso si no planeas usarlo de inmediato, no hay razón para ponerte en una esquina.
Puede consultar algunos ejemplos con el NetDataContractSerializer.
Creo que lo que usted llama un vector es una Lista <> en C#. Eche un vistazo en System.Collections.Generic. Se puede utilizar el NetDataContractSerializer para serializar una lista de 3 cuerdas como:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.IO;
namespace SerializeThingy
{
class Program
{
static void Main(string[] args)
{
List<string> myList = new List<string>();
myList.Add("One");
myList.Add("Two");
myList.Add("Three");
NetDataContractSerializer serializer = new NetDataContractSerializer();
MemoryStream stream = new MemoryStream();
serializer.Serialize(stream, myList);
stream.Position = 0;
Console.WriteLine(ASCIIEncoding.ASCII.GetString(stream.ToArray()));
List<string> myList2 = (List<string>)serializer.Deserialize(stream);
Console.WriteLine(myList2[0]);
Console.ReadKey();
}
}
}
Este ejemplo simplemente serializa una lista, da salida a la serialización a la consola, y luego demuestra que fue hidratada correctamente en la otra cara. Creo que puede ver que desde aquí puede volcar la secuencia de la memoria en una cadena y escribirla en la base de datos, o usar otro tipo de flujo que una secuencia de memoria para hacerlo.
Recuerde hacer referencia a System.Runtime.Serialization para obtener acceso a NetDataContractSerializer.
¡Respuesta impresionante, gracias! – cori
@Jason Jackson Estoy de acuerdo contigo cuando dices ** "Prefiero almacenar objetos serializados como XML en lugar de datos binarios" **, pero ¿qué sucede si tengo que serializar las interfaces? – davioooh
las interfaces no se pueden serializar, por lo que las propiedades implementadas se deben ignorar ... el método anterior es muy útil en algunos casos donde se requieren operaciones de mucho tiempo sobre la creación de estructuras de datos ... prefiero usar el serializador JSON de esa manera se ahorrará memoria ... –