我正在使用Entity Framework进行多级营销应用程序。我已经创建了一个存储过程,但是以某种方式无法显示以下查询-为什么?
;WITH OrgTree ([GenealogyTreeID], [MemberRegisterId], [ParentMemberRegisterId], Level) AS
(
SELECT
[GenealogyTreeID], [MemberRegisterId],
[ParentMemberRegisterId], 0 AS Level
FROM
GenealogyTree
WHERE
ParentMemberRegisterId IS NULL --= 'c9f8479f-2bad-4a70-9c0c-e5c9c6bb1e26'
UNION ALL
SELECT
g.[GenealogyTreeID], g.[MemberRegisterId],
g.[ParentMemberRegisterId], OrgTree.Level + 1
FROM
GenealogyTree g
JOIN
OrgTree ON g.ParentMemberRegisterId = OrgTree.MemberRegisterId
)
SELECT DISTINCT
g.GenealogyTreeID, g.MemberRegisterId,
CASE
WHEN g.Level = 0 THEN NULL
ELSE g.ParentMemberRegisterId
END AS ParentMemberRegisterId,
g.Level,
ISNULL((mmr.FirstName + ' ' + mmr.MiddleName + ' ' + mmr.LastName),
(mr.FirstName + ' ' + mr.MiddleName + ' ' + mr.LastName)) as ParentFullName,
(mr.FirstName + ' ' + mr.MiddleName + ' ' + mr.LastName) as SelFullName,
mr.photo
FROM
OrgTree g
INNER JOIN
MemberRegister mr on mr.MemberRegisterId = g.MemberRegisterId
INNER JOIN
MemberRegister mmr on mmr.MemberRegisterId = g.ParentMemberRegisterId
WHERE
mr.FirstName LIKE '%'+ @SearchValue +'%'
OR mr.MiddleName LIKE '%'+ @SearchValue +'%'
OR mr.LastName LIKE '%'+ @SearchValue +'%'
OR mmr.FirstName LIKE '%'+ @SearchValue +'%'
OR mmr.MiddleName LIKE '%'+ @SearchValue +'%'
OR mmr.LastName LIKE '%'+ @SearchValue +'%'
ORDER BY
ParentMemberRegisterId
OFFSET @PageSize * (@PageNo - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY
OPTION (RECOMPILE);
答案 0 :(得分:0)
您应先删除;
WITH OrgTree
...
;
否则,ORM将第一个语句作为空语句,而忽略第二个语句。
使用 ;WITH
模式是因为;
在T-SQL中通常不是强制性的,但是有些语句要求使用它,例如CTE / MERGE。这就是为什么一些开发人员从WITH
开始;