2013-04-15 33 views
0

我有一個項目結構,不符合標準Sitecore意義上的「文檔」。它對應於數據項目。Sitecore:關注Sitecore查詢中的關係鏈接

一說我的項目有關係的是:

Person -> State -> Country 

,當一個人有一個鏈接字段添加到國家和國家有聯繫領域的國家。

我的問題是:如何寫一個查詢來檢索所有最終鏈接到某個縮寫的國家的人?

我難以理解如何在Sitecore Query中做到這一點。我目前的解決方案是使用LINQ和幾個查詢。

回答

1

假設使用引用字段(如Droplink,Treelist,Droptree等)創建的這些項目之間的鏈接,可以使用Sitecore鏈接數據庫遍歷引用/引用。

下面是一個示例(未經測試),以國家/地區項目開頭並提取任何引用狀態。對狀態執行相同的查詢以獲取任何引用人員。結果被添加到通用List<Item>集合中。

List<Item> peopleList = new List<Item>(); 

var countryReferences = Globals.LinkDatabase.GetReferences(countryItem); 
var referringStates = countryReferences.Select(c => c.GetTargetItem()).Where(c => c.Template.Key == "state"); 
foreach (var state in referringStates) 
{ 
    var stateReferences = Globals.LinkDatabase.GetReferences(state); 
    var referringPeople = stateReferences.Select(s => s.GetTargetItem()).Where(s => s.Template.Key == "person"); 
    foreach (var person in referringPeople) 
    { 
     peopleList.Add(person); 
    } 
} 
+0

我不知道Links數據庫。這讓我的生活變得如此簡單。 –

+0

對此的跟進是,這個結構可以在Sitecore的查詢語言中使用嗎? –

+0

'Globals.LinkDatabase'是我知道的鏈接數據庫的唯一訪問點。是否有限制使用Sitecore查詢的具體原因? –