【问题标题】:How to get Data from parent child relationship Table using LINQ?如何使用 LINQ 从父子关系表中获取数据?
【发布时间】:2015-01-30 08:21:24
【问题描述】:

我有像 Projects ==> 版本 ==> 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 的主键)传递给服务,基于 Id,如果它是 ProjectId(此处为 01)我想检索所有版本(这里02,05),然后找到SprintsId(03,04,06,07),如果是VersionsId(这里05)我想要所有SprintsId(06,07)

【问题讨论】:

    标签: sql-server linq asp.net-mvc-4 entity-framework-6


    【解决方案1】:

    我找到了使用 SQL Strred 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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多