Quel est le Serveur SQL de type de données XML traduire dans .NET et comment puis-je convertir XmlDocument?
Nous avons une colonne dans la base de données qui a un type de xml
. Je suis à la lecture de cette information via la .net SqlDataReader
, mais je ne suis pas sûr de ce que pour le jeter aux.
Msdn table (http://msdn.microsoft.com/en-us/library/cc716729.aspx) semble indiquer qu'il est de la .net type Xml
, mais il n'y a pas de System.Xml
, seulement System.Web.UI.WebControls.Xml
donc je ne sais pas si c'est correct.
Donc ma question est: est-ce
Que dois-je jeter la SqlDbType.Xml
comme je suis en train de lire à partir d'un SqlDataReader
, et comment puis-je convertir XmlDocument
?
êtes-vous à l'aide de SqlConnection ou de l'Entité?
je suis l'aide de sqlconnection
je suis l'aide de sqlconnection
OriginalL'auteur Sinaesthetic | 2012-12-03
Vous devez vous connecter pour publier un commentaire.
Je me souviens d'un moulage d'une chaîne. Alimentation XmlDocument avec une chaîne fonctionne comme d'habitude ensuite.
Ce qui justifie ce jugement? Mieux dans quel sens? Plus facile, plus rapide, ...?
Eh bien, il est de type sécurisé pour commencer, si vous vous souciez de ce genre de choses. Je m'attends qu'il soit plus rapide parce que le XmlReader pourrait travailler avec le flux directement et n'aurait pas nécessairement pour charger le tout dans une chaîne.
Bien que chaque XML valeur est une chaîne, et pas à chaque chaîne est XML, n'auriez-vous pas d'accord avec ça? Comme pour les performances, j'ai eu un coup d'oeil dans le Système.Code de données et mise à jour de la réponse pour vous.
Sachez également que la chaîne peut être tronquée
OriginalL'auteur Wiktor Zychla
Il se traduit par
SqlXml
et vous pouvez obtenir uneXmlReader
avecSqlXml.CreateReader
. Vous devez utiliser leSqlDataReader.GetSqlXml
méthode pour obtenir le type, au lieu d'une chaîne de caractères.Par exemple:
Mise à JOUR: pour répondre À un commentaire de @Wiktor Zychla
Les performances de cette approche est mieux et peut être beaucoup mieux lorsque vous traitez avec de grands champs XML parce que
SqlReader.GetString
va charger le contenu du champ dans une chaîne de premier, tandis queSqlReader.GetSqlXml
crée un XmlReader à partir du flux directement. Qui peut être rapidement vérifiée avec un oeil au Système.De données dans un Réflecteur ou un outil similaire.OriginalL'auteur Serge Belov
J'ai utiliser cette méthode à moi-même, à l'aide de
SqlCommand.ExecuteXmlReader();
Comme je suppose que 'XmlDocument Variable ne prend pas de 'Xmlreader" comme un objet pour la fonction Load().
CRM - il le fait maintenant. l'aide (Système de.Xml.XmlReader xmlReader = xmlData.CreateReader()) { System.Xml.XmlDocument xd = nouveau Système.Xml.XmlDocument(); xd.Charge(xmlReader); return xd; }
OriginalL'auteur sa_ddam213
Sûr, il y a un System.Xml espace de noms:
À utiliser, cependant, vous aurez probablement à l'ajouter comme une référence dans votre projet. Microsoft a instructions pour le faire dans Visual Studio.
OriginalL'auteur Jared Harley