将FlowDocument保存到SQL Server

时间:2010-03-15 14:35:40

标签: sql-server flowdocument

我需要将WPF FlowDocuments保存到SQL Server。这样做的最佳格式是什么?串? BLOB?在一个不到5K字左右的文件中是否重要?

3 个答案:

答案 0 :(得分:5)

如果您只想将FlowDocument对象存储在数据库中而不进行任何处理,我建议使用二进制序列化,并将生成的字节数组存储到varbinary(max)中。这很快并且可以很好地扩展。

但是,如果已经将FlowDocuments作为XML文件,那么将它们转储到nvarchar(max)字段会更容易,没有(添加)序列化/反序列化开销。对于低于8k的值,这可以轻松地进行缩放,然后执行有点确定,直到达到10MB左右。

答案 1 :(得分:5)

FlowDocument不可序列化,因此上面的SWeko答案不起作用。 您可以使用以下方法从一个Xaml字符串获取FlowDocument,然后使用nvarchar(max)将其保存在数据库中。

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

    var infoString = XamlWriter.Save(info);

答案 2 :(得分:1)

您可以使用TextRange类序列化FlowDocument。您甚至可以使用RTF格式。正在保存:

FlowDocument docToSave; // Lets suppose this var is initialized.
var tr = new TextRange(docToSave.ContentStart,docToSave.ContentEnd);
var dst = new MemoryStream();
tr.Save(dst, DataFormats.Rtf);
dst.Close();

并加载:

FlowDocument docToLoad = new FlowDocument();
var tr = new TextRange(docToLoad.ContentStart,docToLoad.ContentEnd);
Stream src; // Lets suppose it is initialized.
tr.Load(src, DataFormats.Rtf);
src.Close();

另请参阅https://www.wpf-tutorial.com/rich-text-controls/how-to-creating-a-rich-text-editor/