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

推荐订阅源

N
News and Events Feed by Topic
F
Fortinet All Blogs
J
Java Code Geeks
GbyAI
GbyAI
Engineering at Meta
Engineering at Meta
P
Privacy International News Feed
V
Visual Studio Blog
Martin Fowler
Martin Fowler
博客园 - 司徒正美
A
Arctic Wolf
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
U
Unit 42
Scott Helme
Scott Helme
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Proofpoint News Feed
P
Palo Alto Networks Blog
S
Securelist
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threatpost
S
SegmentFault 最新的问题
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
K
Kaspersky official blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Exploit Database - CXSecurity.com
Google DeepMind News
Google DeepMind News
A
About on SuperTechFans
月光博客
月光博客
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
NISL@THU
NISL@THU
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
Y
Y Combinator Blog
PCI Perspectives
PCI Perspectives
S
Security Affairs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
O
OpenAI News
Google Online Security Blog
Google Online Security Blog
The Hacker News
The Hacker News
博客园 - Franky
Attack and Defense Labs
Attack and Defense Labs
Hugging Face - Blog
Hugging Face - Blog
N
Netflix TechBlog - Medium
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog

博客园 - 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>();