Во-первых, существует очевидный путь простого создания реляционной структуры и сопоставления объекта с полями в базе данных.
Во-вторых, если у вас есть объект, который можно сериализовать, вы можете сохранить его на сервере SQL. Я делал это время от времени и использовал тип данных Text в SQL Server для хранения XML.
Мнение: я предпочитаю хранить сериализованные объекты в виде XML вместо двоичных данных. Почему? Потому что вы действительно можете прочитать, что там (для отладки), а в SQL Server вы можете использовать XQuery для выбора данных из сериализованного объекта. По моему опыту, выигрыш в производительности от использования двоичных данных не будет стоить того по сравнению с наличием данных, которые легче отлаживать и которые можно использовать псевдо-реляционным образом. Взгляните на возможности SQL Server XQuery . Даже если вы не планируете использовать его сразу, нет никаких причин загонять себя в угол.
Вы можете посмотреть на некоторые примеры, используя NetDataContractSerializer .
Я считаю, что то, что вы называете вектором, это List <> в C #. Посмотрите в System.Collections.Generic. Вы можете использовать NetDataContractSerializer для сериализации списка из 3 строк, например:
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();
}
}
}
Этот пример просто сериализует список, выводит сериализацию на консоль, а затем подтверждает, что она была правильно обработана с обратной стороны. Я думаю, вы можете видеть, что отсюда вы можете либо сбросить поток памяти в строку и записать его в базу данных, либо использовать для этого другой тип потока, отличный от потока памяти.
Не забудьте сослаться на System.Runtime.Serialization, чтобы получить доступ к NetDataContractSerializer.