Expresión de Tabla común (CTE) en linq to sql?


Es posible hacer expresiones de tabla comunes (CTE) (como se muestra a continuación) en Linq a SQL. Soy bastante nuevo en CTE, así como Linq a SQL.

Actualmente estoy almacenado Proc libre (pero no contra ellos de ninguna manera) así que no quiero dar el salto a los procs almacenados solo para una consulta a menos que sea totalmente necesario.

Aquí hay un ejemplo de lo que estoy haciendo en SQL que me pregunto si puedo hacer en Linq a SQL:

WITH TaskHierarchy (TaskID, [Subject], ParentID, HierarchyLevel, HierarchyPath) AS
(
   -- Base case
   SELECT
      TaskID,
      [Subject],
      ParentID,
      1 as HierarchyLevel,
      CONVERT(VARCHAR(MAX),'/') AS HierarchyPath
   FROM Task
   WHERE TaskID = 2

   UNION ALL

   -- Recursive step
   SELECT
      t.TaskID,
      t.Subject,
      t.ParentID,
      th.HierarchyLevel + 1 AS HierarchyLevel,
      CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath
   FROM Task t
      INNER JOIN TaskHierarchy th ON
         t.ParentID = th.TaskID
)

SELECT *
FROM TaskHierarchy
ORDER BY HierarchyLevel, [Subject]
Author: EdenMachine, 2009-02-25

1 answers

AFAIK, esto no es soportado por el modelo object. Sin embargo, LINQ soporta un método para ejecutar una consulta (extrañamente llamado DataContext.executeQuery). Parece que puede usar eso para llamar a una pieza arbitraria de SQL y asignarla de nuevo a LINQ. No será libre de SQL debido al SQL incrustado, pero no tendrá que usar un sproc.

Cómo: Ejecutar consultas SQL directamente (LINQ to SQL)

 18
Author: Chris Hynes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-25 05:55:07