是否可以在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]
Run Code Online (Sandbox Code Playgroud) (编辑:我把它变成了社区维基,因为它更适合协作格式.)
从.NET访问SQL Server和其他数据库有很多种方法.所有这些都有其优点和缺点,它永远不会是一个简单的问题,哪个是"最好的" - 答案永远是"它取决于".
但是,我正在寻找不同层次系统背景下不同方法和框架的高层次比较.例如,我认为对于快速而肮脏的Web 2.0应用程序,答案与内部企业级CRUD应用程序有很大不同.
我知道Stack Overflow上有很多关于这个问题子集的问题,但我认为尝试构建一个汇总比较会很有用.我会尽力更新问题并加以纠正和澄清.
到目前为止,这是我对高层的理解 - 但我确信这是错误的......我主要关注微软的方法来保持这一点.
这些东西是完全不同的还是仅仅是标准ADO.NET的一层? - 如果您有DAL或者实施了LINQ或实体,您真的会使用这些吗?
其他一些相关链接; NHibernate或LINQ to SQL Entity Framework与LINQ to SQL