我有一個包含兩個(相關)表的數據庫:Actions
和Documents
,並使用LINQ查詢它。是否可以在單個查詢中遵循一系列外鍵引用?
動作指向其輸入文檔和文檔指向創建它的動作,因此Action.Document
和Document.SourceAction
。
通過追溯這些關係,我們得到了一個交替操作和文檔的處理鏈。
Final Document-> Last Action-> Middle Document-> First Action-> Source Document
當文檔沒有源操作時,它是原始源文檔。
我使用LINQPad以下查詢聚集在這樣一個鏈中的所有行動並將其輸出:
var actions = new List<LINQPad.User.Action>();
var action = Actions.Where(a => a.Id == 1240).First();
while (action != null) {
actions.Add(action);
action = action.Document != null ? action.Document.SourceAction : null;
}
actions.Dump();
此查詢工作正常,但它當然激發了每一個動作一個SQL查詢。
有沒有辦法在單個LINQ查詢中獲取所有這些操作?
感謝您的鏈接,那裏肯定有有趣的東西(和鏈接)。我一直在尋找「鏈條」和「痕跡」,但從未想到這可能是一個「層次結構」。 –