SQL Server CLR Aggregate: сериализация словаря? - PullRequest
0 голосов
/ 18 января 2012

Я пишу пользовательский агрегат CLR в C # для запуска в SQL Server 2008. Я хочу хранить большинство состояний моих SqlUserDefinedAggregate экземпляров в словарях, поэтому не могу использовать встроенную сериализацию.

Как можно использовать сериализацию UserDefined с методами Read() и Write()?

1 Ответ

0 голосов
/ 18 января 2012

Используя ключи и значения типов, которые обрабатываются BinaryReader и BinaryWriter, запишите каждый словарь в BinaryWriter в порядке key0, value0 ... keyN-1, valueN-1. Добавьте к этой последовательности префикс словаря Count. После последовательности напишите константу, чтобы проверить конец словаря. Лично мне нравится 0xDEADBEEF.

Для десериализации выполните обратное: инициализируйте цикл для запуска n раз (n - первое целое число в вашем потоке) и добавьте в словарь, когда вы читаете в парах ключ / значение. В конце проверьте свою константу.

...