簡體   English   中英

父子關系實體到MAP查看模型

[英]Parent-child relation entity to MAP to view model

我有來自數據庫的位置數據。 我的位置表中有父子關系。

我找回了記錄。 但問題是如何填充我的視圖模型。

例如

位置“美國”有孩子“加利福尼亞”和“紐約”,他們有自己的孩子。

我沒有使用任何映射工具。

這是示例數據

    Id     ChildId   Name
    1      null      US
    2      null      Canada
    3      1         California
    4      3         Los Angeles
    5      2         Nova Scotia
    6      5         Halifax

而且我不知道我的位置表的父子關系的深度

我喜歡一些解決方案所以當我寫

  List<LocVM> obj=context.locations.select(w=new LocVM{....,ChileLocation=w.ChildLoc}).tolist();

所以我的對象將具有所有位置和子位置

查看模型

  Class LocVM{
  public int Id{get;set;}
  public int chileId {get;set;}
  public LocVM ChildLocations {get;set;}        

}

所以上面的查詢

歡迎任何想法

樣本數據

IF OBJECT_ID('dbo.SampleData') IS NOT NULL
DROP TABLE SampleData

CREATE TABLE SampleData (ID int,ChildId INT,Name  VARCHAR(20))
INSERT INTO SampleData 
SELECT 1,null,'US'          UNION ALL
SELECT 2,null,'Canada'      UNION ALL
SELECT 3,1   ,'California'  UNION ALL
SELECT 4,3   ,'Los Angeles' UNION ALL
SELECT 5,2   ,'Nova Scotia' UNION ALL
SELECT 6,5   ,'Halifax'

SELECT * FROM SampleData

這個 Recursive CTE 也許能夠解決你的要求。

;With Cte
AS
(
SELECT 
     ID
     ,ChildId
    ,CAST('/'+Name AS nvarchar(1000)) AS [Heirarchy]
FROM SampleData
WHERE ChildId IS NULL
UNION ALL
SELECT 
     e.ID
    ,e.ChildId
    ,CAST([Heirarchy]+'/'+e.Name AS nvarchar(1000)) AS [Heirarchy]
FROM SampleData e
INNER JOIN Cte t 
ON t.ID = e.ChildId
)
SELECT   ID
       ,RIGHT([Heirarchy],LEN([Heirarchy])-1) AS [CityHeirarchyPath]
FROM Cte

結果

ID  CityHeirarchyPath
----------------------
1   US
2   Canada
5   Canada/Nova Scotia
6   Canada/Nova Scotia/Halifax
3   US/California
4   US/California/Los Angeles

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM