2009-09-27 18 views
0

是否有可能使LinqToSql使用XmlSerializer將類型化的XML字段反序列化爲C#對象?將XmlSerializer與XML字段和LinqToSQL一起使用的最佳方式是什麼?

目前,我有以下代碼:(請注意,我不得不使用XElement.ToString()使用的XmlSerializer)

protected static T Deserialize<T>(string xmlString) where T : class 
    { 
     var xmlSerializer = new XmlSerializer(typeof(T)); 
     var obj = xmlSerializer.Deserialize(new StringReader(xmlString)); 
     return (T)obj; 
    } 
    //... 
    { 
     return ATable.Select(x => Deserializer<AContentType>(x.Content.ToString())); 
     // x.Content is an XElement 
     // AContentType is a class that can be used by XmlSerializer to deserialize 
     // The class was generated using xsd.exe 
    } 

如果我不能讓LinqToSql使用XmlSerializer的,可我至少使它返回一個字符串而不是XElement?

順便說一句。任何想法如何改善Deserialize函數是受歡迎的。

+0

您可以發佈代碼示例嗎?你想要反序列化一個XElement? – RichardOD 2009-09-27 17:46:44

回答

0

不,我不認爲你可以 - 你可以從SQL Server返回一個XML字段作爲字符串,然後對其進行任何手動處理 - 包括使用Linq-to-XML解析它。

但我不知道Linq-to-SQL將XML字段反序列化爲對象的任何內置功能 - 如果SQL Server中沒有XML模式存在,它甚至會這樣做?您可以在SQL Server中同時具有打字和非打字的XML字段(沒有任何模式限制)....

Marc

相關問題