2009-04-14 9 views
0

В настоящее время я работаю над небольшим веб-приложением, используя Visual Studio 2008 Express. Я пытаюсь извлечь XML-документ с сервера с помощью клиентской библиотеки, а затем сохранить документ в столбце базы данных (используя Linq). В столбце базы данных указан тип данных, указанный как xml. К сожалению, во время моих первых попыток я не увенчался успехом.Невозможно сохранить XmlDocument в столбце таблицы с типом данных «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

В чем проблема, которую вы видите? Вы пытались взглянуть на InnerXml, чтобы убедиться, что это действительный документ и что этот текст может быть сохранен в SQL? Я бы использовал Outerxml, а не InnerXml. –

ответ

2

Вам следует использовать XDocument, а не XmlDocument, а затем попытаться назначить XDocument непосредственно свой собственный ресурс oLog.InfoXML.

Не зная, как работает oClient.GetDataAsXML(), неясно, можете ли вы легко создать XDocument с этого вызова, но ваша жизнь будет проще, если вы работаете с XDocument вместо XmlDocument.

+0

Большое спасибо - это закончилось тем, что поставил меня на правильный путь. Клиент возвращает XmlDocument, поэтому я использовал XDocument.Parse() в строке OuterXml возвращаемого XmlDocument. – Tom

1

Here's a great post on that. В основном вы сталкиваетесь с новыми типами XML и старыми типами XML.

+0

@JP - спасибо за ссылку. Рад, что у вас есть эта ссылка, так как она помогает объяснить, что я испытываю. – Tom

0

Вы также можете переключить свой проект с .net 3.5 до 3.0, который по умолчанию вернется к system.xml. Но это избавит вас от использования LINQ.

+0

Не может ли пользователь более старая версия .net вызывать другие проблемы? Это общий подход к решению этой проблемы? –

Смежные вопросы