我需要将 WPF FlowDocuments 保存到 SQL Server。这样做的最佳格式是什么?细绳?斑点?在少于 5K 字左右的文档中是否重要?
问问题
5174 次
3 回答
6
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);
于 2010-03-25T09:14:58.880 回答
5
如果您只想将 FlowDocument 对象存储在数据库中,而不进行任何处理,我建议使用二进制序列化,并将生成的字节数组存储到 varbinary(max) 中。这速度很快并且可以很好地扩展。
但是,如果您已经将 FlowDocuments 作为 XML 文件,那么将它们转储到 nvarchar(max) 字段中会更容易,而无需(添加)序列化/反序列化开销。对于 8k 以下的值,这可以微不足道地扩展,然后执行还不错,直到达到 10MB 左右。
于 2010-03-15T15:43:47.693 回答
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/
于 2020-07-10T08:14:20.710 回答