ServiceStack.OrmLite 6 学习笔记 查
查
根据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 学习笔记 查的更多相关文章
- ServiceStack.OrmLite 学习笔记7-复杂点的使用1
复杂点的使用1 先看看这2个类 class Customer { public int Id { get; set; } ... } class CustomerAddress { public in ...
- ServiceStack.OrmLite 笔记
ServiceStack.OrmLite 笔记1 ServiceStack.OrmLite 这个东东就是个orm框架,可以实现类似ef的效果.具体的就不这里班门弄斧了. 支持 SqlServerDia ...
- Mysql学习笔记(三)对表数据的增删改查。
正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- ServiceStack.OrmLite 笔记2 -增
ServiceStack.OrmLite 笔记2 这篇主要介绍 增加 db.Insert(new Employee { Id = 1, Name = "Employee 1" }) ...
- Mybatis学习笔记(二) 之实现数据库的增删改查
开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包.这些软件工具均可以到各自的官方网站上下载 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- 【EF6学习笔记】(二)操练 CRUD 增删改查
本篇原文链接: Implementing Basic CRUD Functionality 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根 ...
随机推荐
- Qunar实习回顾总结
今天教师节,陪老师喝点小酒,回来难得抽空,整理一下实习阶段的那些零零碎碎却很有用的知识. 1.关于页面中嵌入js代码 (1)有时为了精确控制代码执行顺序流,会将js代码嵌入到网页之中.优点:改变代码触 ...
- TI CC2541的GPIO引脚设置.
P1SEL寄存器, 0xF4, 功能选择用的, 0表示GPIO口, 1表示外设.
- top.location.href和localtion.href有什么不同
top.location.href=”url” 在顶层页面打开url(跳出框架) self.location.href=”url” 仅在本页面打开url地址 pare ...
- Linux系统查看系统是32位还是64位方法总结【转】
转自:http://www.cnblogs.com/kerrycode/p/3785768.html 这篇博客是总结.归纳查看Linux系统是32位还是64位的一些方法,很多内容来自网上网友的博客.本 ...
- 分析Linux内核创建一个新进程的过程【转】
转自:http://www.cnblogs.com/MarkWoo/p/4420588.html 前言说明 本篇为网易云课堂Linux内核分析课程的第六周作业,本次作业我们将具体来分析fork系统调用 ...
- matlab读入矩阵数据
方法: 很简单,把矩阵数据存到excel里,然后存成cvs的格式,就是把每行数据之间用‘,’分隔:行与行之间用‘\n’保存. 举例: 假设cvs为test_nnfeature.txt,后缀可以改啦,只 ...
- 【JQGRID DOCUMENTATION】.学习笔记.4.Navigator
Navigator是一个将查找或编辑记录的动作,变得非常容易达到用户交互特性.开发者可以创建自定义动作,也可以使用六个预定义的动作.jqGrid为预定义的动作提供icon button图形. 一组完整 ...
- 今天 同一个Nav 左右button 替换不显示的问题 viewDidLoad, viewWillDisappear, viewWillAppear等区别及各自的加载顺序
viewWillAppear: Called when the view is about to made visible. Default does nothing视图即将可见时调用.默认情况下不 ...
- 【转】SVN服务器搭建--Subversio与TortoiseSVN的配置安装
转载地址:http://blog.csdn.net/xinxin19881112/article/details/6410263 1. Subversio和TortoiseSVN 简介 Subver ...
- hdu1016 Prime Ring Problem
dfs,用全局数组和变量保存并更新当前状态. 答案可以直接在搜索结束时打印,n为奇数时方案数为0. acm.hdu.edu.cn/showproblem.php?pid=1016 #include & ...