2010-03-15 5 views

Répondre

5

Si vous voulez simplement stocker les objets FlowDocument dans une base de données, sans aucun traitement, je recommanderais d'utiliser la sérialisation binaire et de stocker le tableau d'octets résultant dans un varbinary (max). C'est rapide et évolue bien. Cependant, si vous avez déjà les fichiers FlowDocuments en tant que fichiers XML, il serait plus facile de les vider dans un champ nvarchar (max), sans surcharge (supplémentaire) de sérialisation/désérialisation. Cela échelles trivialement pour les valeurs inférieures à 8k, puis effectue un peu OK jusqu'à ce que vous frappez autour de la marque 10MB.

4

FlowDocument n'étant pas sérialisable, la réponse de SWeko ci-dessus ne fonctionnera pas. Vous pouvez utiliser les méthodes ci-dessous pour obtenir le FlowDocument depuis et vers une chaîne Xaml qui peut ensuite être enregistrée dans la base de données en utilisant nvarchar (max).

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

et

var infoString = XamlWriter.Save(info); 
+2

En fait, la réponse est correcte SWeko - vous pouvez sérialiser un FlowDocument soit XAML ou binaire. Votre code est correct pour XAML, donc +1 de moi. –