2009-12-01 15 views
6

estuviera usando FileStream para serializar un objeto a XML y guardar en el discoCómo serializar y guardar un objeto de base de datos como XML utilizando 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() 
     }); 

Esto funciona bien y el archivo XML se genera en el disco . ¿Cómo guardo Object serialized como Xml en una columna XML de la base de datos Sql Server 2008 usando Linq to SQL? ¿Y cómo deserializar lo mismo de la base de datos?

Respuesta

7

para serializar en 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; 

deserializar

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

En sql debe tener el tipo de columna XML y en linq el tipo de Colum debe ser XElement de lo que puede manipular throw Linq.