2010-03-15 5 views

ответ

5

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

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

4

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); 
+2

На самом деле, ответ SWeko является правильным - вы можете сериализовать FlowDocument либо XAML или двоичный файл. Ваш код правильный для XAML, поэтому +1 от меня. –

Смежные вопросы