简体   繁体   中英

How to get Data from parent child relationship Table using LINQ?

I have schema like Projects ==> versions ==> 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 So on....

I want to retrieve all SprintsId,so I just pass the Id (which is Primary Key of sprint/Version/Project) to the service, Based on the Ids, if it is ProjectId (here 01) I want to retrieve all versions(here 02,05), then find the SprintsId(03,04,06,07), If it is VersionsId(here 05) I want all SprintsId(06,07)

I find the solution using SQL Strored Procedure.using Stored Procedure it is less complex

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 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM