2009-08-07 82 views
2

有沒有人知道的方式來做一個左外連接與SubSonic 3.0或另一種方法來解決這個問題?我想要完成的是我有一個部門表和另一個部門表。一個部門可以有多個部門。我需要顯示包含它所在部門的部門清單。找回每個包含一組部門的部門將是理想的,但我也會拿一個扁平的結果表。外加入亞音速3.0

使用LINQ語法似乎被破壞(我新的LINQ,但並可以使用它錯了),例如,這將引發ArgumentException錯誤:

var allDepartments = from div in Division.All() 
    join dept in Department.All() on div.DepartmentId equals dept.Id into divdept 
    select divdept; 

所以我想我可能會回落到使用SubSonic查詢語法。此代碼生成INNER JOIN而不是OUTER JOIN:

List<Department> allDepartments = new Select() 
    .From<Department>() 
    .LeftOuterJoin<Division>(DepartmentsTable.IdColumn, DivisionsTable.DepartmentIdColumn) 
    .ExecuteTypedList<Department>(); 

任何幫助,將不勝感激。我對SubSonic 3並沒有太大的好運。我真的很喜歡使用SubSonic 2,如果我無法弄清楚像左連接這樣的基本問題,可能會回頭看看。

回答

2

Getting back a collection of departments which each contain a collection of divisions would be ideal

亞音速做這件事情(如果你設置你的人際關係正確的數據庫),只需選擇所有Departments

var depts = Model.Department.All(); 

將有一個名爲Divisionsdepts每一個項目,一個屬性,該屬性包含一個Division對象的集合。

+0

不錯。我認爲可能是因爲它是ActiveRecord的實現。我被從調用Divisions返回的IQueryable弄糊塗了。現在有道理,謝謝。 – 2009-08-07 16:08:35