MicroOrm.Net(6) Table.Query() - Join & Order By
MicroOrm.Net主页:
http://code.google.com/p/micro-orm-net/
MicroOrm.Net系列随便目录总览:
http://www.cnblogs.com/mapserver/archive/2012/04/07/2436129.html
本文我们来演示MicroOrm.Net查询的Join部分,请看Join方法的api文档:
Query Join(Table joinTable, Expression on ) Query InnerJoin(Table joinTable, Expression on ) Query LeftJoin(Table joinTable, Expression on ) Query LeftOuterJoin(Table joinTable, Expression on ) Query RightJoin(Table joinTable, Expression on ) Query RightOuterJoin(Table joinTable, Expression on ) |
目前Join方法都需要手动传Expression参数,也就是关联表和被关联表之间的关联条件,虽然在DB可以设置表和表之间外键约束,而且也能通过代码抓取到外键约束,但在MicroOrm.Net查询Join,还是需要手动传入关联条件。
上面api中的Join方法等同于InnerJoin。
简单代码如下:
db.OrderDetail.Query() .Join(db.Order, db.Order.OrderId == db.OrderDetail.OrderId) |
如果关联条件不止一个时:
db.Table1.Query() .Join(db.Table2, db.Table1.Id1 == db.Table2.Id1 && db.Table1.Id2 == db.Table2.Id2) |
同样道理,也可以执行多次Join方法,关联多个表:
db.OrderDetail.Query() .Join(db.Order, db.Order.OrderId == db.OrderDetail.OrderId) .Join(db.Product, db.Product.ProductId == db.OrderDetail.ProductId) .RightJoin(db.Customer, db.Customer.CustomerId == db.Order.CustomerId) |
上面我们演示了Join,下面来看看Order By,也先看Order By的api:
Query OrderBy( params Column[] columns) Query OrderByAsc( params Column[] columns Query OrderByDesc( params Column[] columns) |
上面api里的OrderBy方法等同于OrderByAsc方法
请看下面的代码示例:
db.OrderDetil.Query() .Join(db.Order, db.Order.OrderId == db.OrderDetail.OrderId) .OrderBy(db.Order.CustomerId) .OrderByDesc(db.OrderDetail.Qty) |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步