无法将XmlDocument存储在数据类型为“xml”的表列中

时间:2009-04-14 23:34:38

标签: c# sql-server asp.net-mvc xml linq

我目前正在使用Visual Studio 2008 Express开发一个小型Web应用程序。我正在尝试使用客户端库从服务器检索XML文档,然后将文档保存到数据库列(使用Linq)。数据库列的数据类型指定为xml。不幸的是,在我的前几次尝试中,我一直没有成功。

假设我已经获得了对数据上下文对象的引用,这里是我尝试做的基础知识:

// using a client library, requestthe XML document from the server
XmlDocument oXmlDoc = oClient.GetDataAsXML();

InformationLog oLog = new InformationLog();
oLog.InfoXML = oXmlDoc.InnerXml; // this is where the problem occurs

dbContext.InformationLogs.InsertOnSubmit(oLog);
dbContext.SubmitChanges();

具体来说,我得到的错误是:

Cannot implicitly convert type 'System.Xml.XmlNode' to 'System.Xml.Linq.XElement'

我是ASP.NET MVC和Linq的新手,所以我知道我错过了一些东西。除了答案之外,我还很好奇为什么不可能在没有任何额外处理的情况下简单地保存XML。

3 个答案:

答案 0 :(得分:2)

您应该使用XDocument而不是XmlDocument,然后尝试将XDocument直接分配给您的oLog.InfoXML属性。

在不知道oClient.GetDataAsXML()是如何工作的情况下,不清楚你是否可以从该调用中轻松创建一个XDocument,但如果你使用XDocument而不是XmlDocument,你的生活会更容易。

答案 1 :(得分:1)

Here's a great post on that。基本上你有新的XML类型和旧的XML类型在那里发生冲突。

答案 2 :(得分:0)

您还可以将项目从.net 3.5切换到3.0,默认情况下您将返回system.xml。但这会让你远离使用LINQ。