[英]How can I get a “flat” output of data from a parent / child table with LINQ
[英]How to get Data from parent child relationship Table using LINQ?
我有類似項目==>版本==> 01 Project01 Null 02 Version01 01 03 Sprint01 02 04 sprint02 02 05 Version02 01 06 Sprint03 05 07 Sprint04 05 08 Project02 Null
架構sprints 01 Project01 Null 02 Version01 01 03 Sprint01 02 04 sprint02 02 05 Version02 01 06 Sprint03 05 07 Sprint04 05 08 Project02 Null
等等。
我想檢索所有SprintsId,所以我只是將ID(它是sprint / Version / Project的主鍵)傳遞給服務,如果是ProjectId(在這里01),則基於Id,我想在這里檢索所有版本(在這里) 02,05),然后找到SprintsId(03,04,06,07),如果它是VersionsId(此處為05),則我希望所有SprintsId(06,07)
我找到了使用SQL Strored Procedure的解決方案。使用存儲過程它不那么復雜
CREATE PROCEDURE [dbo].[USP_Project]
(
@ID INT
)
AS
BEGIN
DECLARE @PROJECT_LEVEL INT =0
-- IF PROJECT LEVEL IS PROJECT
SELECT @PROJECT_LEVEL=COUNT(ID) FROM PROJECTS WHERE ID=@ID AND PARENTID IS NULL
IF(@PROJECT_LEVEL=1)
BEGIN
SELECT PROJ.id AS PROJECT_ID,PROJ.Title ,VER.ID AS VERSION_ID,VER.Title as [Version], SPRI.ID AS SPRINT_ID,SPRI.Title as [Sprint]
FROM PROJECTS AS PROJ ,PROJECTS AS VER,PROJECTS AS SPRI
WHERE PROJ.ID=@ID AND VER.PARENTID=@ID AND SPRI.PARENTID=VER.ID
END
-- IF PROJECT LEVEL IS VERSION
SELECT @PROJECT_LEVEL= COUNT(VER.ID)
FROM PROJECTS AS PROJ ,PROJECTS AS VER
WHERE VER.PARENTID=PROJ.ID AND PROJ.PARENTID IS NULL AND VER.ID=@ID
IF(@PROJECT_LEVEL>0)
BEGIN
SELECT PROJ.id AS PROJECT_ID,PROJ.Title ,VER.ID AS VERSION_ID,VER.Title as [Version], SPR.ID AS SPRINT_ID,SPR.Title as [Sprint]
FROM PROJECTS AS PROJ ,PROJECTS AS VER ,PROJECTS AS SPR
WHERE VER.ID=@ID AND SPR.PARENTID=@ID AND VER.PARENTID=PROJ.ID
END
-- IF PROJECT LEVEL IS SPRINT
SELECT @PROJECT_LEVEL= COUNT(SPR.ID)
FROM PROJECTS AS PROJ ,PROJECTS AS VER ,PROJECTS AS SPR
WHERE SPR.PARENTID=VER.ID AND VER.PARENTID=PROJ.ID AND PROJ.PARENTID IS NULL AND SPR.ID=@ID
IF(@PROJECT_LEVEL>0)
BEGIN
SELECT PROJ.id AS PROJECT_ID,PROJ.Title ,VER.ID AS VERSION_ID,VER.Title as [Version] , SPR.ID AS SPRINT_ID,SPR.Title as [Sprint]
FROM PROJECTS AS PROJ ,PROJECTS AS VER ,PROJECTS AS SPR
WHERE SPR.ID=@ID AND SPR.PARENTID=VER.ID AND VER.PARENTID=PROJ.ID
END
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.