如何使用Linq to SQL将对象序列化并将对象保存为Xml

我使用FileStream将对象序列化为Xml并保存到磁盘

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文件。 如何使用Linq to SQL将序列化的对象作为Xml保存到Sql Server 2008数据库的XML列中? 以及如何从数据库反序列化相同的内容?

序列化为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(); } 

在sql中,你必须有colum类型的XML,而在linq中,Colum的类型必须是XElement,而不是你可以操作throw Linq。