2008-10-17 4 views
15

Предположим, у меня есть таблица с столбцом данных типа XML. В SQL, я могу выполнить следующее заявление:Использование XQuery в 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 

Результирующий набор содержит только записи, соответствующие критериям, и он извлекает значение из XML в колонке под названием «Value». Ницца и просто.

Можно ли достичь того же с Linq To SQL?

Я хочу, чтобы SQL выполнял тяжелую работу и возвращал только данные, соответствующие моим критериям, вместо того, чтобы выбирать, переносить и обрабатывать потенциально массивный кусок данных. Насколько я могу судить, в настоящий момент это невозможно, но я подумал, что должен спросить.

(Среда .NET 3.5, VS2008, SQL Server 2005, если это помогает)

+0

Я столкнулся с теми же проблемами и должен был сделать это, используя хранимые procs или выполнив запросы xquery через datacontext – 2008-10-21 17:51:45

ответ

5

Я не совсем уверен, что это устарело сейчас, но в соответствии с Scott Guthrie XML типами данных являются:

представлены как строки в LINQ to SQL Объекты. Вы можете использовать XLINQ для запроса в столбце XML в LINQ до SQL entitiy - но этот запрос будет произойти в вашем среднем уровне (в пределах ASP.NET). Вы не можете выполнить удаленный XQuery по базе данных, а фильтр получил результаты, основанные на том, что в первом выпуске .

Так что, отвечая на ваш вопрос, я бы сказал «нет».