当前位置:  开发笔记 > 数据库 > 正文

linq-to-sql中的公用表表达式(CTE)?

如何解决《linq-to-sql中的公用表表达式(CTE)?》经验,为你挑选了1个好方法。

是否可以在Linq to SQL中执行公用表表达式(CTE)(如下所示).我对CTE和Linq to SQL都很陌生.

我目前正在免费存储过程(但不能以任何方式对付它们)所以我不想仅仅针对一个查询进行存储过程的跳跃,除非它是完全必要的.

这是我在SQL中做的一个例子,我想知道我是否可以在Linq to 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]

Chris Hynes.. 19

AFAIK,对象模型不支持此功能.但是,LINQ支持一种执行查询的方法(足够严格地称为DataContext.ExecuteQuery).看起来你可以使用它来调用任意一段SQL并将其映射回LINQ.由于嵌入式SQL,您将不再是SQL,但您不必使用sproc.

如何:直接执行SQL查询(LINQ to SQL)



1> Chris Hynes..:

AFAIK,对象模型不支持此功能.但是,LINQ支持一种执行查询的方法(足够严格地称为DataContext.ExecuteQuery).看起来你可以使用它来调用任意一段SQL并将其映射回LINQ.由于嵌入式SQL,您将不再是SQL,但您不必使用sproc.

如何:直接执行SQL查询(LINQ to SQL)

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有