原创

Dos.ORM使用方法 - Inner Join联合查询

 167744  2015/02/23 07:57:33

car_5

创建DbSession对象:

public class DB
{
    public static readonly DbSession Context = new DbSession("DosConn");
}

多表联合查询:

//SQL语句:SELECT a.*,b.*,c.name FROM table a 
//            INNER JOIN table2 b ON a.id=b.aid
//            LEFT JOIN table3 c ON a.id=c.aid
var list = DB.Context.From<table>()
                .Select(table._.All,
                        table2._.All,
                        table3._.name)
                .InnerJoin<table2>((a,b) => a.id == b.aid)
                .LeftJoin<table3>((a,c) => a.id == c.aid)
                .ToList();
//由于返回的数据是List<table>数据,如果table实体类不包含table3的name字段
//那么将无法映射这些数据,所以需要为table扩展属性
//新建带有partial修饰的table扩展类,与table实体类在同一命名空间下:
using Model;
public partial class table
{
    public string name { get; set;}
    //可以继续扩展table2中的字段
}
//这样.ToList()返回的List<table>数据就包含table3.name的数据了。
//如果您觉得关联表太多,字段太多,扩展麻烦,可以直接返回.ToDataTable()。

方法对照表:

方法SQL
.InnerJoin<T>()
inner join
.LeftJoin<T>()left join
.RightJoin<T>()right join
.CrossJoin<T>()cross join
.FullJoin<T>(0
full join