2008-10-17 10 views
15

Digamos que tengo una tabla que tiene una columna de datos de tipo XML. Dentro de SQL, puedo ejecute la siguiente instrucción:¿Usando XQuery en Linq a SQL?

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

El conjunto de resultados contiene sólo los registros que coinciden con los criterios, y se extrae un valor del XML en una columna llamada 'Valor'. Agradable y simple.

¿Se puede lograr lo mismo con Linq To SQL?

Me gustaría que SQL haga el trabajo pesado y solo devuelva datos que coincidan con mis criterios en lugar de tener que seleccionar, transferir y luego procesar un fragmento potencialmente masivo de datos. Por lo que puedo decir, esto no es posible en este momento, pero pensé que debería preguntar.

(El medio ambiente es .NET 3.5, VS2008, SQL Server 2005 si eso ayuda)

+0

He encontrado los mismos problemas y tuve que hacerlo usando procs almacenados o ejecutando consultas xquery a través del contexto de datos –

+0

En realidad, usaremos el método de contexto de datos. Es una mierda, pero hace el trabajo y solo tenemos una entidad con una columna XML. Debería ser fácil de mantener limpio y organizado. –

Respuesta

5

No estoy muy seguro de si esto está fuera de fecha ahora, pero de acuerdo con los tipos de datos XML se Scott Guthrie:

representados como cadenas en LINQ to SQL Entidades. Puede usar XLINQ para consultar en una columna XML dentro de su entidad de SQL LINQ a - pero esta consulta sería en su nivel medio (dentro de ASP.NET). No puede ejecutar un XQuery remoto en la base de datos y arrojar resultados basados ​​en la primera versión de .

Así que en respuesta a su pregunta, yo diría "no".