2009-08-07 96 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