C# Can';t将XmlDocument存储在数据类型为'的表列中;xml';
我目前正在使用VisualStudio2008Express开发一个小型web应用程序。我试图使用客户端库从服务器检索XML文档,然后将文档保存到数据库列中(使用Linq)。数据库列的数据类型指定为C# Can';t将XmlDocument存储在数据类型为'的表列中;xml';,c#,sql-server,asp.net-mvc,xml,linq,C#,Sql Server,Asp.net Mvc,Xml,Linq,我目前正在使用VisualStudio2008Express开发一个小型web应用程序。我试图使用客户端库从服务器检索XML文档,然后将文档保存到数据库列中(使用Linq)。数据库列的数据类型指定为xml。不幸的是,我在最初几次尝试中都失败了 假设我已经获得了对数据上下文对象的引用,下面是我尝试执行的基本操作: // using a client library, requestthe XML document from the server XmlDocument oXmlDoc = oCli
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。您应该使用XDocument而不是XmlDocument,然后尝试将XDocument直接分配给您的oLog.InfoXML属性
在不知道oClient.GetDataAsXML()如何工作的情况下,不清楚您是否可以通过该调用轻松创建XDocument,但如果您使用XDocument而不是XmlDocument,您的生活会更轻松。您应该考虑使用XDocument而不是XmlDocument,然后尝试将XDocument直接分配给oLog.InfoXML属性
在不知道oClient.GetDataAsXML()如何工作的情况下,不清楚您是否可以通过该调用轻松创建XDocument,但如果您使用XDocument而不是XmlDocument,您的生活会更轻松。。基本上,新的XML类型和旧的XML类型在这里相互冲突。。基本上,新的XML类型和旧的XML类型会发生冲突。您还可以将项目从.net 3.5切换到3.0,这将默认您返回到
system.XML
。但这将使您不再使用LINQ。您还可以将项目从.net 3.5切换到3.0,这将默认返回到system.xml
。但这会使您远离使用LINQ。您看到的问题是什么?您是否尝试查看InnerXml以确保它是一个有效的文档,并且该文本可以存储在SQL中?我会使用Outerxml而不是InnerXml。您看到了什么问题?您是否尝试查看InnerXml以确保它是一个有效的文档,并且该文本可以存储在SQL中?我会使用Outerxml而不是InnerXml。非常感谢-这最终让我走上了正确的道路。客户端返回一个XmlDocument,所以我在返回的XmlDocument的OuterXml字符串上使用了XDocument.Parse()。非常感谢-这让我走上了正确的道路。客户端返回一个XmlDocument,所以我在返回的XmlDocument的OuterXml字符串上使用了XDocument.Parse()。@JP-谢谢您的链接。很高兴将此作为参考,因为它有助于解释我所经历的冲突。@JP-感谢链接。很高兴将此作为参考,因为它有助于解释我所经历的冲突。使用较旧版本的.net不会导致其他问题吗?这是处理此问题的常用方法吗?使用较旧版本的.net不会导致其他问题吗?这是处理这一问题的常见方法吗?