【问题标题】:Outer Joins with Subsonic 3.0使用 Subsonic 3.0 进行外部连接
【发布时间】:2009-08-07 15:33:25
【问题描述】:

有谁知道使用 SubSonic 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,如果我想不出像左连接这样基本的东西,我可能会回到那个状态。

【问题讨论】:

    标签: linq subsonic subsonic3


    【解决方案1】:

    取回一个部门集合,每个部门都包含一个部门集合是理想的

    SubSonic 会为您执行此操作(如果您在数据库中正确设置了关系),只需选择所有 Departments

    var depts = Model.Department.All();
    

    depts 的每一项中都会有一个名为Divisions 的属性,其中包含Division 对象的集合。

    【讨论】:

    • 不错。我认为这可能是因为它是 ActiveRecord 的实现。我对调用 Divisions 返回的 IQueryable 感到困惑。现在明白了,谢谢。
    猜你喜欢
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2020-12-07
    • 2020-01-09
    • 1970-01-01
    • 2011-03-12
    • 2010-12-27
    相关资源
    最近更新 更多