根据id
var result = db.SingleById<Poco>(1);

根据字段
var customer = db.Single<Customer>(new { customer.Email });

动态结果
db.Select<List<object>>(db.From<Poco>().Select("COUNT(*), MIN(Id), MAX(Id)"))[0];
// List<object>:[ 10, 1, 10] 同上
db.Select<Dictionary<string,object>>(db.From<Poco>().Select("COUNT(*) Total, MIN(Id) MinId, MAX(Id) MaxId"))[0]

单行
db.Single<List<object>>(db.From<Poco>().Select("COUNT(*) Total, MIN(Id) MinId, MAX(Id) MaxId"))

硬来  首行首列
object result = db.Scalar<object>(db.From<Poco>().Select(x => x.Id));

in操作 Order表的CustomerId等于Customer表记录(Country等于USA)的id
sql:select * from Order where CustomerId in ( select id from Customer where Country = "USA" ) var usaCustomerIds = db.From<Customer>(c => c.Country == "USA").Select(c => c.Id);
var usaCustomerOrders = db.Select(db.From<Order>()
.Where(q => Sql.In(q.CustomerId, usaCustomerIds)));

db.Select<Author>(q => q.Birthday >= new DateTime(agesAgo, 1, 1)
&& q.Birthday <= new DateTime(agesAgo, 12, 31));

In

db.Select(q => Sql.In(q.City, "London", "Madrid", "Berlin"));

sql: WHERE "JobCity" In ('London', 'Madrid', 'Berlin')


like a开头

db.Select(q => q.Name.StartsWith("A"));

WHERE upper("Name") like 'A%'

like GARZON结尾

db.Select(q => q.Name.EndsWith("garzon"));

WHERE upper("Name") like '%GARZON'

like 包含

db.Select(q => q.Name.Contains("Benedict"));

WHERE upper("Name") like '%BENEDICT%'


and

db.Select(q => q.Rate == 10 && q.City == "Mexico");

WHERE (("Rate" = 10) AND ("JobCity" = 'Mexico'))

最大

int maxAgeUnder50 = db.Scalar<Person, int>(x => Sql.Max(x.Age), x => x.Age < 50);

SELECT Max("Age") FROM "Person" WHERE ("Age" < 50)


count 汇总

int peopleOver40 = db.Scalar( db.From().Select(Sql.Count("*")).Where(q => q.Age > 40));

int peopleUnder50 = db.Count(x => x.Age < 50);

不通过id Single会加top 1

Person personByAge = db.Single(x => x.Age == 42);

是否存在

bool has42YearOlds = db.Exists(new { Age = 42 });

返回固定字段

List results = db.Column(db.From().Select(x => x.LastName).Where(q => q.Age == 27));

SELECT "LastName" FROM "Person" WHERE ("Age" = 27)

---
对结果去重
HashSet<int> results = db.ColumnDistinct<int>(db.From<Person>().Select(x => x.Age) .Where(q => q.Age < 50)); SELECT "Age" FROM "Person" WHERE ("Age" < 50)

 字典结果
Dictionary<int,string> results = db.Dictionary<int, string>( db.From<Person>().Select(x => new { x.Id, x.LastName }).Where(x => x.Age < 50)); SELECT "Id","LastName" FROM "Person" WHERE ("Age" < 50)

复杂的字典

Dictionary<int, List> results = db.Lookup<int, string>(db.From().Select(x => new { x.Age, x.LastName }).Where(q => q.Age < 50));

  SELECT "Age","LastName" FROM "Person" WHERE ("Age" < 50)

   SelectFmt 参数格式化
var tracks = db.SelectFmt<Track>("Artist = {0} AND Album = {1}", "Nirvana", "Heart Shaped Box");
等同于
var tracks = db.SelectFmt<Track>("SELECT * FROM track WHERE Artist={0} AND Album={1}","Nirvana", "Heart Shaped Box");

    多条记录
List<Track> tracks = db.Select<Track>()

单条记录

Track track = db.Single(q => q.RefId == refId)


字典 前2列

Dictionary<int, string> trackIdNamesMap = db.Dictionary<int, string>( "select Id, Name from Track")


Lookup 字典 前2列 返回的是Dictionary < K, List < V > >

Dictionary<int, List> albumTrackNames = db.Lookup<int, string>( "select AlbumId, Name from Track")


返回首列

List trackNames = db.Column("select Name from Track")


HashSet首列值去重

HashSet uniqueTrackNames = db.ColumnDistinct("select Name from Track")


Scalar返回单行单列

var trackCount = db.Scalar("select count(*) from Track")


默认为and条件

var track3 = db.Where(new { AlbumName = "Throwing Copper", TrackNo = 3 })


这种方式被用烂了大街 属性对应参数名

var track3 = db.Select(

"select * from Track Where AlbumName = @album and TrackNo = @trackNo", new { album = "Throwing Copper", trackNo = 3 })


通过id 返回强类型

var track = db.SingleById(1); id等于1的一条

var tracks = db.SelectByIds(new[]{ 1,2,3 }); id等于 1 2 3的三条


延迟加载 SelectLazy这种以Lazy结尾

var lazyQuery = db.SelectLazy("Age > @age", new { age = 40 });

// Iterate over a lazy sequence

foreach (var person in lazyQuery) {

//...

}

其他类同 如下

var topVIPs = db.WhereLazy(new { Age = 27 }).Where(p => IsVip(p)).Take(5)

var topVIPs = db.SelectLazyFmt("Age > {0}", 40).Where(p => IsVip(p)).Take(5)

ServiceStack.OrmLite 6 学习笔记 查的更多相关文章

  1. ServiceStack.OrmLite 学习笔记7-复杂点的使用1

    复杂点的使用1 先看看这2个类 class Customer { public int Id { get; set; } ... } class CustomerAddress { public in ...

  2. ServiceStack.OrmLite 笔记

    ServiceStack.OrmLite 笔记1 ServiceStack.OrmLite 这个东东就是个orm框架,可以实现类似ef的效果.具体的就不这里班门弄斧了. 支持 SqlServerDia ...

  3. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  4. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. ServiceStack.OrmLite 笔记2 -增

    ServiceStack.OrmLite 笔记2 这篇主要介绍 增加 db.Insert(new Employee { Id = 1, Name = "Employee 1" }) ...

  7. Mybatis学习笔记(二) 之实现数据库的增删改查

    开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...

  8. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  9. 【EF6学习笔记】(二)操练 CRUD 增删改查

    本篇原文链接: Implementing Basic CRUD Functionality 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根 ...

随机推荐

  1. 【转】Delphi利用系统环境变量获取常用系统目录

    Delphi code //譬如 %WINDIR% 是表示系统目录的系统变量, 可以这样获取: var s: string; begin s := GetEnvironmentVariable('WI ...

  2. Delphi Xe2 后的版本如何让Delphi程序启动自动“以管理员身份运行"

    由于Vista以后win中加入的UAC安全机制,采用Delphi开发的程序如果不右键点击“以管理员身份运行”,则会报错. 在XE2以上的Delphi版本处理这个问题已经非常简单了. 右建点击工程,选择 ...

  3. 【python cookbook】【字符串与文本】15.给字符串中的变量名做插值处理

    问题:想创建一个字符串,其中嵌入的变量名称会以变量的字符串值形式替换掉 解决方法:str.format().str.format_map() >>> s = '{name} has ...

  4. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  5. 兼容IE, Chrome的ajax function

    gAjax.js var gAjax = (function () { /* paramObj:{ url: request url, method: GET or POST, encode: cha ...

  6. PHP操作Memcache基本函数的方法

    Memcache基本函数. Memcache ― Memcache类 Memcache::add ― 增加一个条目到缓存服务器 Memcache::addServer ― 向连接池中添加一个memca ...

  7. 【PHP设计模式 06_GuanChaZhe.php】观察者模式

    <?php /** * [观察者模式] * PHP5中提供了 观察者(observer) 和 被观察者(subject) 的接口 * 在手册搜索:SplSubject (PHP 5 >= ...

  8. C#:文件、路径(Path_File)

    public class Path_File { public string AppPath { get { return AppDomain.CurrentDomain.BaseDirectory; ...

  9. 查看mysql的状态

    实时查看mysql状态连接数 查询数 etc mysqladmin  -uroot  -p '' -h status -i 1

  10. java面试每日一题8

    题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1 ...