Сохранение FlowDocument в SQL Server - PullRequest
4 голосов
/ 15 марта 2010

Мне нужно сохранить WPF FlowDocuments на SQL Server. Какой лучший формат для этого? Строка? Blob? Имеет ли значение в документе менее 5 тысяч слов или около того?

Ответы [ 2 ]

5 голосов
/ 25 марта 2010

FlowDocument не сериализуем, поэтому ответ SWeko выше не будет работать. Вы можете использовать методы ниже, чтобы получить FlowDocument и из строки Xaml, которая затем может быть сохранена в базе данных, используя nvarchar (max).

    var stringReader = new StringReader(info);
    var xmlTextReader = new XmlTextReader(stringReader);
    return (FlowDocument)XamlReader.Load(xmlTextReader);

и

    var infoString = XamlWriter.Save(info);
5 голосов
/ 15 марта 2010

Если вы просто хотите сохранить объекты FlowDocument в базе данных без какой-либо обработки, я бы порекомендовал использовать двоичную сериализацию и сохранить полученный байтовый массив в varbinary (max). Это быстро и хорошо масштабируется.

Однако, если у вас уже есть FlowDocuments в виде файлов XML, было бы проще просто скопировать их в поле nvarchar (max) без затрат на добавление сериализации / десериализации. Это легко масштабируется для значений менее 8 Кб, а затем работает вроде ОК, пока вы не достигнете отметки 10 МБ.

...