博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RavenDb学习(六)查询补充特性
阅读量:6614 次
发布时间:2019-06-24

本文共 2347 字,大约阅读时间需要 7 分钟。

1、延迟加载原来的查询方式如下:IEnumerable
users = session .Query
() .Where(x => x.Name == "john");延迟加载方式:Lazy
> lazyUsers = session .Query
() .Where(x => x.Name == "John") .Lazily();IEnumerable
users = lazyUsers.Value;//一次执行所有延迟操作IEnumerable
users = null;IEnumerable
cities = null; session .Query
() .Where(x => x.Name == "John") .Lazily(x => users = x); session .Query
() .Where(x => x.Name == "New York") .Lazily(x => cities = x); session.Advanced.Eagerly.ExecuteAllPendingLazyOperations();//lucene的也支持Lazy
> users = session.Advanced .LuceneQuery
() .WhereEquals("Name", "John") .Lazily();2、交集在服务端进行交集操作,只返回符合全部条件的数据session.Query
("TShirtIndex") .Where(x => x.Manufacturer == "Raven") .Intersect() .Where(x => x.Types.Any(t => t.Color == "Blue" && t.Size == "Small")) .Intersect() .Where(x => x.Types.Any(t => t.Color == "Gray" && t.Size == "Large")) .ToList();或者这么写session.Advanced.LuceneQuery
("TShirtIndex") .Where("Manufacturer:Raven INTERSECT Color:Blue AND Size:Small INTERSECT Color:Gray AND Size:Large") .ToList();3、禁止缓存和跟踪session.Query
().Customize(x => x.NoCaching());session.Query
().Customize(x => x.NoTracking());4、动态聚合假设我们有一条这样的sql语句select sum(Total) from Orders where Total > 500 group by Productlinq的写法是:var result = session.Query
("Orders/All") .Where(x => x.Total > 500) .AggregateBy(x => x.Product) .SumOn(x => x.Total) .ToList();store的store.DatabaseCommands.PutIndex("Orders/All", new IndexDefinitionBuilder
(){ Map = orders => from order in orders select new { order.Total, order.Product, order.Concurrency }, SortOptions = { { x => x.Product, SortOptions.Double } }});扩展查询:result = session.Query
("Orders/All") .AggregateBy(x => x.Product) .AddRanges(x => x.Total < 100, x => x.Total >= 100 && x.Total < 500, x => x.Total >= 500 && x.Total < 1500, x => x.Total >= 1500) .SumOn(x => x.Total) .ToList();result = session.Query
("Orders/All") .AggregateBy(x => x.Product) .SumOn(x => x.Total) .CountOn(x => x.Total) .AndAggregateOn(x => x.Concurrency) .MinOn(x => x.Total) .ToList();result = session.Query
("Orders/All") .AggregateBy(x => x.Product) .SumOn(x => x.Total) .CountOn(x => x.Total) .AndAggregateOn(x => x.Concurrency) .MinOn(x => x.Total) .ToList();

 

转载于:https://www.cnblogs.com/cenyuhai/p/3537005.html

你可能感兴趣的文章
.NET中JSON的序列化和反序列化的几种方式
查看>>
可能是把Java内存区域讲的最清楚的一篇文章
查看>>
Ionic3开发环境搭建-VS Code
查看>>
Docker 搭建私有仓库
查看>>
django 1.8 官方文档翻译: 3-2-3
查看>>
有一种娱乐叫看别人编程
查看>>
phar反序列化
查看>>
谷歌:光靠软件修复不能完全防御“幽灵”漏洞
查看>>
两种使用原生js实现导出excel数据简单讲解
查看>>
Github使用教程
查看>>
【朝花夕拾】Android性能篇之(三)Java内存回收
查看>>
KDE Plasma 5.15.3 发布,Plasma 桌面环境
查看>>
说说你对执行 JS 代码时产生的执行上下文的理解?
查看>>
Confluence 6 访问日志脚本
查看>>
安卓手机如何在桌面上添加敬业签提醒便签?
查看>>
大讲堂 | 人工智能技术新浪潮浅析
查看>>
Redis · 引擎特性 · 基于 LFU 的热点 key 发现机制
查看>>
《Linux命令行与shell脚本编程大全》第十六章 控制脚本
查看>>
获取浏览器滚动距离
查看>>
小程序获取用户信息
查看>>