Во-первых, существует очевидный путь простого создания реляционной структуры и сопоставления объекта с полями в базе данных.
Во-вторых, если у вас есть объект, который можно сериализовать, вы можете сохранить его на SQL-сервере. Я делал это иногда и использовал тип данных Text в SQL Server для хранения XML.
Мнение: Я предпочитаю хранить сериализованные объекты как XML вместо двоичных данных. Почему? Поскольку вы действительно можете прочитать, что там (для отладки), а в SQL Server вы можете использовать XQuery для выбора данных из сериализованного объекта. По моему опыту, прирост производительности при использовании двоичных данных не стоит того, чтобы сравнивать данные, которые легче отлаживать, и их можно использовать в псевдо-реляционном режиме. Взгляните на SQL Server's XQuery capabilities. Даже если вы не планируете использовать его сразу, нет причин помещать себя в угол.
Вы можете посмотреть некоторые примеры, используя NetDataContractSerializer.
Я считаю, что вы называете вектор списком <> в 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.
Итак, вы говорите, что если вам нужно сохранить что-то, что не является встроенным типом столбца базы данных, вместо этого вы должны использовать плоские файлы? – MusiGenesis 2008-10-20 00:28:04
Почему бы не использовать базу данных? Это, безусловно, имеет преимущество в том, что оно более масштабируемо, чем плоский файл. И если вы используете формат сериализации XML, вы также можете запрашивать данные на SQL Server с помощью XQuery. – 2008-10-20 00:32:11
Если вы сохраняете сложный объект в базе данных, каждое поле объекта должно получить собственный столбец или таблицу, чтобы вы могли искать и запрашивать в этом поле. – 2008-10-20 00:52:44