2009-12-01 56 views
6

我用的FileStream序列化一個對象到XML和保存到磁盤如何序列化,並使用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() 
     }); 

這工作得很好,並在磁盤上生成XML文件對象數據庫保存爲XML 。如何使用Linq to SQL將序列化對象保存爲Xml到Sql Server 2008數據庫的XML列中?以及如何從數據庫反序列化相同?

回答

7

要序列成的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; 

反序列化

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

在sql中,你必須有colum類型的XML,而在linq中,Colum的類型必須是XElement,而不是你可以操縱的拋出Linq。