2009-12-01 17 views
6

dovessi usare FileStream per serializzare un oggetto in XML e salvare sul discocome serializzare e salvare un oggetto nel database in formato XML utilizzando LINQ to SQL

Stream str = new FileStream(@"serializedstate.xml", FileMode.OpenOrCreate) 
XmlSerializer x = new XmlSerializer(typeof(GridState)); 
x.Serialize(str, new GridState 
     { 
      GridName= txtGridName.Text, 
      GridColumns = GetGridColumnStates() 
     }); 

Questo funziona bene e file XML viene generato sul disco . Come posso salvare l'oggetto serializzato come Xml in una colonna XML del database Sql Server 2008 utilizzando Linq to SQL? E come deserializzare lo stesso dal database?

risposta

7

per serializzare in un XElement

 XmlSerializer x = new XmlSerializer(typeof(GridState)); 
     XDocument doc = new XDocument(); 

     using (XmlWriter xw = doc.CreateWriter()) 
     { 
      x.Serialize(xw, new GridState 
       { 
        GridName= txtGridName.Text, 
        GridColumns = GetGridColumnStates() 
       }); 
      xw.Close(); 
     } 

     XElement el = doc.Root; 

deserializzare

 using (XmlReader xr = el.CreateReader()) 
     { 
      GridState myDeserializedObject = x.Deserialize(xr) as GridState; 
      xr.Close(); 
     } 
0

In sql è necessario disporre di tipo colum XML e in linq il tipo di colonna deve essere XElement di quello che è possibile manipolare per lanciare Linq.