まず、単純にリレーショナル構造を作成し、オブジェクトをデータベースのフィールドにマッピングするという明白な方法があります。
次に、シリアル化可能なオブジェクトがある場合は、それを SQL サーバーに格納できます。私は時々これを行い、SQL Server で Text データ型を使用して XML を格納しました。
意見: シリアル化されたオブジェクトを、バイナリ データではなく XML として格納することを好みます。なんで?実際にそこにあるものを (デバッグのために) 読み取ることができ、SQL Server では XQuery を使用してシリアル化されたオブジェクトからデータを選択できるためです。私の経験からすると、バイナリ データを使用することによるパフォーマンスの向上は、デバッグが容易で疑似リレーショナルな方法で使用できるデータを使用することに比べれば、それほど価値はありません。SQL Server の XQuery 機能をご覧ください。すぐに使用する予定がなくても、追い詰められる理由はありません。
NetDataContractSerializerを使用したいくつかの例を見ることができます。
あなたがベクトルと呼んでいるものは、C# の List<> だと思います。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 にアクセスすることを忘れないでください。