惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
罗磊的独立博客
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
博客园 - Franky
F
Fortinet All Blogs
D
Docker
博客园 - 司徒正美
腾讯CDC
Recent Announcements
Recent Announcements
The Cloudflare Blog
B
Blog RSS Feed
GbyAI
GbyAI
T
Tailwind CSS Blog
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志

博客园 - mapserver

MicroOrm.Net和现有ORM产品的对比 MicroOrm.Net(8) Table.Query() - Distinct、Skip & Take MicroOrm.Net(7) Table.Query() - Group By & Having MicroOrm.Net(6) Table.Query() - Join & Order By MicroOrm.Net(5) Table.Query() - Select MicroOrm.Net(3) Database、Table、Column、Expression、Math&MathE MicroOrm.Net(2) 基础及动态特性 MicroOrm.Net(1) 总览 Asp.net服务器控件编程(6) ViewState(二)——ViewState用法和IStateManager Asp.net服务器控件编程(5) 复杂属性 Asp.net服务器控件编程(4) 呈现 Asp.net服务器控件编程(3) ViewState(一)——asp.net控件的精华之一 Asp.net服务器控件编程(2) 来做个热身运动吧 Asp.net服务器控件编程(1) 开篇、基础 Asp.net服务器控件编程 总览 TextDataSource(3) — 请把我的数据更新回去 TextDataSource(2) — 翠花,上“数据” TextDataSource(1) — DataSourceControl内幕 .NET组件编程(10) 补充 ISupportInitialize
MicroOrm.Net(4) Table.Query() - Where
mapserver · 2012-04-08 · via 博客园 - mapserver

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的查询,请看Table.Query()的api文档:

// ----------------------第一部分----------------------
Query Where(Expression criteria)
Query Select(params MathE[] maths)
Query Select(params Column[] columns)
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)
Query OrderBy(params Column[] columns)
Query OrderByAsc(params Column[] columns
Query OrderByDesc(params Column[] columns)
Query GroupBy(params Column[] columns)
Query Having(Expression criteria)
Query Skip(int skip)
Query Take(int take)
Query Distinct()

// ----------------------第二部分----------------------
dynamic First()
T First<T>()
dynamic Last()
T Last<T>()
IList ToList()
dynamic[] ToArray()
IList<T> ToList<T>()
T[] ToArray<T>()

上面的api分为两部分,第一部分的返回值都为Query对象,第二部分才会向数据库去执行sql语句,返回查询的结果。

Where:

db.OrderDatail.Query()
        .Where(db.OrderDetail.OrderId == "001")
        
db.OrderDatail.Query()
        .Where(db.OrderDetail.OrderId == "001" && db.OrderDetail.Qty > 0)
        
db.OrderDatail.Query()
        .Where(db.OrderDetail.OrderId == "001" && (db.OrderDetail.Qty > 0 || db.OrderDetail.OrderDetailId == "001")

MicroOrm.Net也支持表的别名。即使定义了表的别名,在Where方法的表达式里,可以用表的别名,也可以不用。

Where方法,可以执行多次。

db.OrderDatail.As("od").Query() //table alias
        .Where(db.od.OrderId == "001")
        .Where(db.OrderDetail.Qty > 0)

Where方法的表达式也支持Like、IsNull、IsNotNull

db.OrderDatail.As("od").Query()
        .Where(db.od.ProductId.IsNotNull())
        .Where(db.od.ProductId.Like("CA%") 

下面演示向数据库执行sql语句:

var od = db.OrderDetail.Query()
                .Where(db.OrderDetail.OrderId == "001")
                .First();

产生的sql语句如下:

exec sp_executesql N'SELECT TOP 1 [_#0_].* FROM [dbo].[OrderDetail] [_#0_] WHERE [_#0_].[OrderId] = @p0 ',N'@p0 nvarchar(3)',@p0=N'001'

更多:

var od1 = db.OrderDetail.Query()
    .Where(db.OrderDetail.OrderId == "001")
    .First<OrderDetail>();

var od2 = db.OrderDetail.Query()
    .Where(db.OrderDetail.OrderId == "001")
    .Last();

OrderDetail od3 = db.OrderDetail.Query()
    .Where(db.OrderDetail.OrderId == "001")
    .Last<OrderDetail>();

IList ods1 = db.OrderDetail.Query()
        .Where(db.OrderDetail.OrderId == "001")
        .ToList(); 

dynamic[] ods2 = db.OrderDetail.Query()
        .Where(db.OrderDetail.OrderId == "001")
        .ToArray();

IList<OrderDetail> ods3 = db.OrderDetail.Query()
        .Where(db.OrderDetail.OrderId == "001")
        .ToList<OrderDetail>();

OrderDetail[] ods4 = db.OrderDetail.Query()
        .Where(db.OrderDetail.OrderId == "001")
        .ToArray<OrderDetail>();