Использование XQuery в Linq To SQL?
Скажем, у меня есть таблица, в которой есть столбец данных типа XML. В 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 в столбец с именем "Значение". Приятно и просто.
Можно ли сделать то же самое с Linq To SQL?
Я хочу, чтобы SQL выполнял тяжелую работу и возвращал только данные, соответствующие моим критериям, вместо того, чтобы выбирать, переносить и обрабатывать потенциально массивный кусок данных. Насколько я могу судить, это невозможно в данный момент, но я подумал, что должен спросить.
(Это среда .NET 3.5, VS2008, SQL Server 2005, если это помогает)
Ответы
Ответ 1
Я не совсем уверен, что это устарело сейчас, но согласно Скотт Гатри Типы данных XML:
представлены в виде строк в LINQ to SQL Сущности. Вы можете использовать XLINQ для запроса в столбце XML в вашей LINQ SQL entitiy - но этот запрос происходят в вашем среднем уровне (в пределах ASP.NET). Вы не можете выполнить удаленный XQuery против базы данных и фильтра вернули результаты, основанные на первый выпуск.
Итак, отвечая на ваш вопрос, я бы сказал "нет".