我目前正在使用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。
答案 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。