2008-10-17 5 views
15

Disons que j'ai une table qui a une colonne de données de type XML. Au sein de SQL, je peux exécuter l'instruction suivante:Utiliser XQuery dans Linq To SQL?

select top 10 *, 
     Content.value('(/root/item/value)[1]', 'float') as Value 
from  xmltabletest 
where Content.value('(/root/item/MessageType)[1]', 'int') = 1 

Le jeu de résultats contient uniquement les enregistrements correspondant aux critères, et il extrait une valeur à partir du XML dans une colonne appelée « valeur ». Nice et simple.

Est-ce que la même chose peut être réalisée avec Linq To SQL? Je voudrais que SQL fasse le gros du travail et ne renvoie que des données correspondant à mes critères plutôt que de devoir sélectionner, transférer et ensuite traiter un gros morceau de données. Autant que je sache, ce n'est pas possible en ce moment, mais j'ai pensé que je devrais demander.

(L'environnement est .NET 3.5, VS2008, SQL Server 2005 si cela aide)

+0

J'ai rencontré les mêmes problèmes et j'ai dû le faire en utilisant procs stocké ou en exécutant des requêtes xquery à travers le datacontext –

+0

En fait, nous allons utiliser la méthode de contexte de données. Ça craint, mais ça fait le travail et nous n'avons qu'une seule entité avec une colonne XML. Devrait être facile à garder propre et organisé. –

Répondre

5

Je ne suis pas sûr que ce soit à jour maintenant, mais selon Scott Guthrie XML sont des types de données:

représenté sous forme de chaînes dans LINQ to SQL Entités. Vous pouvez utiliser XLINQ pour interroger sur une colonne XML au sein de votre LINQ à SQL Entitiy - mais cette requête se produit dans votre niveau intermédiaire (au sein de ASP.NET). Vous ne pouvez pas exécuter un distant XQuery par rapport à la base de données et filtrer les résultats retournés basés sur celui de la première version .

Donc, en réponse à votre question, je dirais «non».