Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving FlowDocument to SQL Server

I need to save WPF FlowDocuments to SQL Server. What is the best format for doing that? String? Blob? Does it matter in a document less than 5K words or so?

like image 317
David Veeneman Avatar asked Dec 18 '22 02:12

David Veeneman


2 Answers

FlowDocument is not serializable so SWeko's answer above will not work. You can use the methods below to get the FlowDocument to and from a Xaml string which can then be saved in the database using nvarchar(max).

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

and

    var infoString = XamlWriter.Save(info);
like image 140
David Ward Avatar answered Dec 22 '22 01:12

David Ward


If you just want to store the FlowDocument objects in a database, without any processing, I would recommend using binary serialization, and storing the resulting byte array into a varbinary(max). This is fast and scales well.

However, if you already have the FlowDocuments as XML files, than it would be easier just to dump them into a nvarchar(max) field, with no (added) serialization/deserialization overhead. This scales trivially for values under 8k, and then performs kinda OK until you hit around the 10MB mark.

like image 44
SWeko Avatar answered Dec 21 '22 23:12

SWeko