暗中认可使用的EF6澳门永利备用网址.0版本

多字段组合排序(字符串)

务求:查询名字里面富含“张三”的上学的小孩子,先按名字排序,再按年龄排序。

澳门永利备用网址 1

澳门永利备用网址 2

哎,不对啊。按名字排序被年龄排序覆盖了。大家应当用ThenBy来整合排序。

澳门永利备用网址 3

澳门永利备用网址 4

不错不错,就是大家想要的效用。借使你不想用ThenBy,且都以升序的话,大家也得以:

澳门永利备用网址 5

澳门永利备用网址 6

扭转的sql是同等的。与OrderBy、ThenBy对应的降序有OrderByDescending、ThenByDescending。

看似好像很圆满了。其实否则,大家抢先50%状态排序是动态的。比方,大家会越来越前端页面差别的操作要求差别字段的比不上排序。那大家后台应该如何是好啊?

澳门永利备用网址 7

理所必然,那样产生是没难点的,只要你愿意。能够如此多或许的剖断有未有认为非凡SB?是的,我们自然有更好的消除方案。假设OrderBy能够一贯传字符串???

澳门永利备用网址,杀鸡取卵方案:

  1. guget下载System.Linq.Dynamic 
  2. 导入System.Linq.Dynamic命名空间
  3. 编写OrderBy的扩展方法

澳门永利备用网址 8

接下来下边又长又臭的代码能够写成:

澳门永利备用网址 9

作者们看下生成的sql:

澳门永利备用网址 10

和大家想要的效益完全符合,是否认为美美哒!!

【注意】:盛传的排序字段前边要加排序关键字
asc或desc

联表查询总括

务求:查询前九二十一个学生考试项目(“模拟考试”、“正式考试”)、考试次数、语文平均分、学生姓名,且考试次数抢先等于3次。(按考试种类分类总计)

代码如下:

澳门永利备用网址 11

观望这么的代码,小编先是影响是惨了。又在循环施行sql了。监察和控制如下:

澳门永利备用网址 12

实则,大家只要求多少退换就把101条sql造成1条,如下:

澳门永利备用网址 13

马上变1条。

澳门永利备用网址 14

我们开拓查看详细的sql语句

澳门永利备用网址 15

察觉那仅仅只是查询结果会集而已,个中的按考试类别来总计是程序获得具备数据后在图谋的(而不是在数据库内总结,然后直接重临结果),那样同样是荒废了数据库查询数据传输。

关于连接查询分组总括大家得以应用SelectMany,如下:

澳门永利备用网址 16

监理sql如下:(是否简单多了吗?)

澳门永利备用网址 17

关于SelectMany资料:

http://www.cnblogs.com/lifepoem/archive/2011/11/18/2253579.html

http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html

性情升高之AsNonUnicode

澳门永利备用网址 18

监督检查到的sql

澳门永利备用网址 19

咱俩看看EF符合规律意况变化的sql会在前面带上“N”,假使大家增添DbFunctions.AsNonUnicode生成的sql是尚未“N”的,当你意识带上“N”的sql比一直不带“N”的
sql查询速度慢许多的时候这就了然该如何是好。

(从前用oracle的时候带不带“N”查询成效差异特别扎眼,明天用sql
server测试并未有发觉怎么差别澳门永利备用网址 20。还也许有本身发现EF6会根据数据库中是nvarchar的时候才会生成带“N”的sql,oracle数据库没测试,有乐趣的同班能够测试下)

自定义IQueryable增加方法

 最后整理下自定义的IQueryable的扩张。

 澳门永利备用网址 21

澳门永利备用网址 22

 

补充1:

First和Single的区别:前者是TOP(1)后者是TOP(2),后者如果查询到了2条数据则抛出异常。所以在必要的时候使用Single也不会比First慢多少。

补充2: 

已打包nuget提供第一手设置 Install-Package
Talk.Linq.Extensions 或nuget寻觅 Talk.Linq.Extensions 

https://github.com/zhaopeiym/Talk/wiki/Talk.Linq.Extensions_demo

 

结束:

源码下载:http://pan.baidu.com/s/1o8MYozw

本文以联合至《C#基础知识加强类别

接待热心园友补充!

数量筹算

新建实体:Score(成绩分数表)、Student(学生表)、Teacher(老师表)

澳门永利备用网址 23

背后会给出demo代码下载链接

天性升高之AsNonUnicode

澳门永利备用网址 24

监理到的sql

澳门永利备用网址 25

大家看出EF平常景况变化的sql会在头里带上“N”,假使我们抬高DbFunctions.AsNonUnicode生成的sql是不曾“N”的,当您意识带上“N”的sql比未有带“N”的
sql查询速度慢大多的时候那就清楚该怎么做。

(此前用oracle的时候带不带“N”查询作用差别特别分明,后天用sql
server测试并未有开采怎么异样澳门永利备用网址 26。还会有本人开采EF6会依照数据库中是nvarchar的时候才会生成带“N”的sql,oracle数据库没测试,风乐趣的同校能够测试下)

推荐MiniProfiler插件

工欲善其事,必先利其器。

我们选取EF和在非常大程度升高了支付速度,不过随后推动的是许多质量低下的写法和转变不太高速的sql。

固然如此大家得以选择SQL Server
Profiler来监察和控制实行的sql,然则个人感到就是麻烦,每一趟需求开采、过滤、清除、关闭。

在此处刚强推荐一个插件MiniProfiler。实时监察和控制页面乞请对应试行的sql语句、执行时间。轻松、方便、针对性强。

如图:(具体运用和介绍请移步)

澳门永利备用网址 27

count(*)被您用坏了吗(Any的用法)

务求:查询是还是不是留存名叫“张三”的学习者。(你的代码会怎样写吧?)

澳门永利备用网址 28

首先种?第两种?第三种?呵呵,作者原先就是选择的率先种,然后有些人会讲“你count被您用坏了”,后来小编想了想了怎么就被自个儿用坏了吗?直到相比较了那四个语句的品质后作者理解了。

澳门永利备用网址 29

属性之差竟有三百多倍,count确实被本身用坏了。(作者想,不仅被自身一人用坏了呢。)

咱俩看看地点的Any干嘛的?官方解释是:

澳门永利备用网址 30

作者多次阅读这些粤语表达,一直不可能清楚。乃至早有人也提出过同样的问号《事实上看不懂MSDN关于
Any
的分解

之所以本人个人知道也是“鲜明集结中是或不是有元素满意某一尺度”。大家来探望any其他用法:

务求:查询教过“张三”或“李四”的教师

贯彻代码:

澳门永利备用网址 31

三种格局,此前笔者会习贯写第一种。当然大家看看生成过的sql和实践效能之后,理念改换了。

澳门永利备用网址 32

频率之差竟有近六倍

俺们再对照下count:

澳门永利备用网址 33

澳门永利备用网址 34

得出奇怪的定论:

  1. 在导航属性之中使用count和动用any品质分别十分的小,反而FirstOrDefault()
    != null的不二等秘书籍质量最差。
  2. 在间接属性决断其中any和FirstOrDefault() !=
    null品质分别相当的小,count质量要差的多。
  3. 于是,不管是间接属性依然导航属性大家都用any来剖断是或不是留存是最妥善的。

count(*)被你用坏了吧(Any的用法)

渴求:查询是不是留存名为“张三”的上学的小孩子。(你的代码会怎样写啊?)

澳门永利备用网址 35

先是种?第两种?第二种?呵呵,作者以前正是运用的第一种,然后有一些人会说“你count被您用坏了”,后来自己想了想了怎么就被自身用坏了吧?直到相比较了那四个语句的质量后我晓得了。

澳门永利备用网址 36

质量之差竟有第三百货多倍,count确实被自身用坏了。(小编想,不仅被作者一人用坏了啊。)

大家看来上面包车型大巴Any干嘛的?官方解释是:

澳门永利备用网址 37

自身再三阅读那么些普通话演说,一直不可能知道。以致早有人也建议过一模二样的难点《实质上看不懂MSDN关于
Any
的表达

因而笔者个人精晓也是“鲜明集结中是不是有元素满意某一口径”。大家来看看any别的用法:

渴求:查询教过“张三”或“李四”的良师

落到实处代码:

澳门永利备用网址 38

二种情势,在此从前作者会习贯写第一种。当然大家看看生成过的sql和实行效用之后,思想改换了。

澳门永利备用网址 39

频率之差竟有近六倍

我们再对照下count:

澳门永利备用网址 40

澳门永利备用网址 41

得出古怪的结论:

  1. 在导航属性之中使用count和动用any质量分别十分的小,反而FirstOrDefault()
    != null的主意品质最差。
  2. 在一贯属性判别其中any和FirstOrDefault() !=
    null质量分别比较小,count质量要差的多。
  3. 因此,不管是一贯属性如故导航属性我们都用any来决断是还是不是存在是最伏贴的。

数码准备

新建实体:Score(战表分数表)、Student(学生表)、Teacher(老师表)

澳门永利备用网址 42

末端会给出demo代码下载链接

自定义IQueryable扩大方法

 最终整理下自定义的IQueryable的恢弘。

 澳门永利备用网址 43

澳门永利备用网址 44

 

补充1:

First和Single的区别:前者是TOP(1)后者是TOP(2),后者如果查询到了2条数据则抛出异常。所以在必要的时候使用Single也不会比First慢多少。

补充2: 

已打包nuget提供第一手设置 Install-Package
Talk.Linq.Extensions 或nuget寻找 Talk.Linq.Extensions 

https://github.com/zhaopeiym/Talk/wiki/Talk.Linq.Extensions_demo

 

结束:

源码下载:http://pan.baidu.com/s/1o8MYozw

正文以协同至《C#基础知识加强体系

接待热心园友补充!

AutoMapper工具

下边大家经过Include突显的实践表的连年查询显著是精确的,但还相当不够。如若我们只供给查询数据的某个字段呢,上边查询全数字段岂不是很浪费内部存款和储蓄器存款和储蓄空间和应用程序与数据库数据传输带宽。

咱俩得以:

澳门永利备用网址 45

对应监督到的sql:

澳门永利备用网址 46

我们看出变化的sql,查询的字段少了众多。唯有大家展现列出来字段的和三个StudentId,StudentId用来连接查询条件的。

是的,那样的主意很准确。不过有未有怎么样越来越好的方案或措施呢?答案是分明的。(不然,也不会在此间屁话了。)要是表字段不少,我们须要选择的字段也非常的多,导航属性也丰裕多的时候,那样的手动映射就显示不那么赏心悦目了。那么接下去大家起先介绍使用AutoMapper来形成映射:

小心:首先须要NuGet下载AutoMapper。(然后导入命名空间 using
AutoMapper; using AutoMapper.QueryableExtensions;)

澳门永利备用网址 47

澳门永利备用网址 48

大家看到地方查询语句未有叁个个的手动映射,而映射都以独立布署了。在那之中CreateMap应该是要写到Global.asax文件之中的。(其实约等于分别了炫丽部分,清晰了询问语句。细心的校友只怕注意到了,这种措施还免去了当仁不让Include)

澳门永利备用网址 49

小编们见到了变动的sql和后边有多少不一,但只生成了一条sql,并且结果也是科学的。(其实正是多了一条CASE WHEN ([Extent2].[Id] IS
NOT NULL) THEN 1 END AS
[C1]。看起来那条语句并不曾什么实际意义,不过那是AutoMapper生成的sql,同期作者也意味着不清楚为啥和EF生成的不一样)

这般做的实惠?

  1. 幸免在循环中做客导航属性多次实践sql语句。
  2. 防止了查询语句中太多的手动映射,影响代码的翻阅。

有关AutoMapper的别的部分素材:

http://www.cnblogs.com/xishuai/p/3712361.html

http://www.cnblogs.com/xishuai/p/3700052.html

http://www.cnblogs.com/farb/p/AutoMapperContent.html

属性提高之AsNoTracking

澳门永利备用网址 50

我们看变化的sql

澳门永利备用网址 51

sql是变化的千篇一律,但是实践时间却是4.8倍。原因仅仅只是第一条EF语句多加了二个AsNoTracking。

注意:

  • AsNoTracking干什么的啊?无追踪查询而已,也正是说查询出来的目的无法平素做修改。所以,咱们在做多少集结查询显示,而又无需对集中修改并立异到数据库的时候,一定不要遗忘加上AsNoTracking。
  • 假诺查询进度做了select映射就不须求加AsNoTracking。如:db.Students.Where(t=>t.Name.Contains(“张三”)).select(t=>new
    (t.Name,t.Age)).ToList();

EF的预热

http://www.cnblogs.com/dudu/p/entity-framework-warm-up.html

【转】你不能够不掌握的EF知识和经历

foreach循环的陷进 

1.有关延迟加载

澳门永利备用网址 52

请看上海教室红框。为啥StudentId有值,而Studet为null?因为运用code
first,供给设置导航属性为virtual,才会加载延迟加载数据。

澳门永利备用网址 53

2.有关在循环中做客导航属性的可怜管理(接着上边,加上virtual后会报以下极度)

“已有展开的与此 Command 相关联的
DataReader,必须首先将它停业。”

澳门永利备用网址 54

化解方案:

  • 方案1、设定ConnectionString加上MultipleActiveResultSets=true,但只适用于SQL
    2007未来的版本
  • 方案2、或许先读出放置在List中

3.以上两点仅为热身,大家说的陷阱才刚刚初步!

澳门永利备用网址 55

下一场我们点击张开MiniProfiler工具(不要被吓到)

澳门永利备用网址 56

澳门永利备用网址 57

消除方案:使用Include体现两次三番查询(注意:必要手动导入using System.Data.Entity
不然Include只好传表名字符串)。

澳门永利备用网址 58

再看迷你Profiler的监督检查(弹指间101条sql造成了1条,那当中的质量总之。)

澳门永利备用网址 59

foreach循环的陷进 

1.有关推迟加载

澳门永利备用网址 60

请看上海图书馆红框。为啥StudentId有值,而Studet为null?因为运用code
first,须求安装导航属性为virtual,才会加载延迟加载数据。

澳门永利备用网址 61

2.有关在循环中走访导航属性的要命管理(接着下边,加上virtual后会报以下极度)

“已有开辟的与此 Command 相关联的
DataReader,必须首先将它倒闭。”

澳门永利备用网址 62

焚林而猎方案:

  • 方案1、设定ConnectionString加上MultipleActiveResultSets=true,但只适用于SQL
    二〇〇五今后的版本
  • 方案2、恐怕先读出放置在List中

3.之上两点仅为热身,我们说的陷阱才刚刚开首!

澳门永利备用网址 63

接下来我们点击张开MiniProfiler工具(不要被吓到)

澳门永利备用网址 64

澳门永利备用网址 65

消除方案:使用Include呈现一而再查询(注意:须要手动导入using System.Data.Entity
不然Include只好传表名字符串)。

澳门永利备用网址 66

再看MiniProfiler的督察(须臾间101条sql形成了1条,那其间的品质同理可得。)

澳门永利备用网址 67

留神:以下内容假诺未有特地表明,暗许使用的EF6.0版本,code first情势。

联表查询总计

务求:查询前玖21个学生考试连串(“模拟考试”、“正式考试”)、考试次数、语文平均分、学生姓名,且考试次数当先等于3次。(按考试项目分类计算)

代码如下:

澳门永利备用网址 68

看看那般的代码,我先是反响是惨了。又在循环施行sql了。监察和控制如下:

澳门永利备用网址 69

事实上,大家只需求有个别更改就把101条sql变成1条,如下:

澳门永利备用网址 70

马上变1条。

澳门永利备用网址 71

咱俩开发查看详细的sql语句

澳门永利备用网址 72

意识那仅仅只是查询结果集合而已,在那之中的按考试体系来总计是程序得到具备数据后在总结的(而不是在数据库内总结,然后直接重返结果),那样平等是荒废了数据库查询数据传输。

至于连接查询分组总计大家得以选用SelectMany,如下:

澳门永利备用网址 73

监督sql如下:(是还是不是轻松多了吧?)

澳门永利备用网址 74

关于SelectMany资料:

http://www.cnblogs.com/lifepoem/archive/2011/11/18/2253579.html

http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html

EntityFramework.Extended

那边推荐下插件EntityFramework.Extended,看了下,很不错。

最大的优点正是能够直接批量退换、删除,不用像EF暗中同意的急需先做询问操作。

有关官方EF为啥平素不提供这么的支撑就不知情了。然则使用EntityFramework.Extended须求小心以下几点:

  1. 只支持sql server
  2. 批量改变、删除时无法兑现职业(约等于出了特别不可能回滚)
  3. 并未有联级删除
  4. 不能同EF一起SaveChanges
    详见

http://www.cnblogs.com/GuZhenYin/p/5482288.html

在此改良个难题EntityFramework.Extended并不是说不可能回滚,谢谢@GuZhenYin园友的指正(原谅本人事先并未动手测试)。

留神:需求NuGet下载EntityFramework.Extended,
并导入命名空间: using
EntityFramework.Extensions ;

测试代码如下:(如若注释掉手抛分外代码是足以平昔更新到数据库的)

using (var ctxTransaction = db.Database.BeginTransaction())
{
    try
    {
        db.Teachers.Where(t => true).Update(t => new Teacher { Age = "1" });

        throw new Exception("手动抛出异常");

        ctxTransaction.Commit();//提交事务
    }
    catch (Exception)
    {
        ctxTransaction.Rollback();//回滚事务
    }
}

小心:以下内容就算未有特别表达,暗中同意使用的EF6.0版本,code first情势。

属性提高之AsNoTracking

澳门永利备用网址 75

我们看变化的sql

澳门永利备用网址 76

sql是生成的一模二样,不过举行时间却是4.8倍。原因仅仅只是第一条EF语句多加了三个AsNoTracking。

注意:

  • AsNoTracking干什么的啊?无追踪查询而已,也正是说查询出来的靶子不能够直接做修改。所以,我们在做多少集合查询彰显,而又没有供给对集中修改并更新到数据库的时候,一定不要遗忘加上AsNoTracking。
  • 一旦查询进程做了select映射就没有必要加AsNoTracking。如:db.Students.Where(t=>t.Name.Contains(“张三”)).select(t=>new
    (t.Name,t.Age)).ToList();

透明标志符

设若由于种种原因大家需求写下边那样逻辑的讲话

澳门永利备用网址 77

大家得以写成那样更加好

澳门永利备用网址 78

看生成的sql就精晓了

澳门永利备用网址 79

第两种艺术调换的sql要深透得多,质量也更加好。

lamdba条件构成

渴求:依照分化景观询问,可能情状

  1. 询问name=“张三” 的全体学生
  2. 查询name=“张三” 大概 age=18的富有学员

落到实处代码:

澳门永利备用网址 80

是或不是味到了一样的臭气澳门永利备用网址 81。上面我们来灵活组装Lamdba条件。

焚薮而田方案:

澳门永利备用网址 82澳门永利备用网址 83

这段代码作者也是从英特网偷的,具体链接找不到了。

然后大家的代码能够写成:

澳门永利备用网址 84

有没有美美哒一点澳门永利备用网址 85。然后大家看看生成的sql是或不是科学:

澳门永利备用网址 86

AutoMapper工具

上面我们由此Include展现的施行表的连接查询显著是不易的,但还缺乏。若是大家只要求查询数据的一点字段呢,上面查询全体字段岂不是很浪费内部存储器存款和储蓄空间和应用程序与数据库数据传输带宽。

大家得以:

澳门永利备用网址 87

对应监督到的sql:

澳门永利备用网址 88

我们看出变化的sql,查询的字段少了过多。唯有大家体现列出来字段的和一个StudentId,StudentId用来连接查询条件的。

是的,那样的点子很科学。可是有未有何样更加好的方案或方式啊?答案是早晚的。(不然,也不会在那边屁话了。)要是表字段大多,大家必要选拔的字段也相当的多,导航属性也极其多的时候,那样的手动映射就展现不那么美观了。那么接下去我们起头介绍使用AutoMapper来形成映射:

留意:首先须求NuGet下载AutoMapper。(然后导入命名空间 using
AutoMapper; using AutoMapper.QueryableExtensions;)

澳门永利备用网址 89

澳门永利备用网址 90

咱俩看到地点查询语句未有多个个的手动映射,而映射都以独自布署了。在那之中CreateMap应该是要写到Global.asax文件之中的。(其实也便是分开了绚烂部分,清晰了询问语句。细心的同室恐怕注意到了,这种方法还免去了积极Include)

澳门永利备用网址 91

大家来看了扭转的sql和前面有微微见仁见智,但只生成了一条sql,并且结果也是毋庸置疑的。(其实就是多了一条CASE WHEN ([Extent2].[Id] IS
NOT NULL) THEN 1 END AS
[C1]。看起来那条语句并不曾什么实际意义,不过那是AutoMapper生成的sql,同一时间笔者也象征不通晓为何和EF生成的不等)

那般做的好处?

  1. 制止在循环中做客导航属性数十二遍推行sql语句。
  2. 制止了查询语句中太多的手动映射,影响代码的开卷。

至于AutoMapper的别的部分素材:

http://www.cnblogs.com/xishuai/p/3712361.html

http://www.cnblogs.com/xishuai/p/3700052.html

http://www.cnblogs.com/farb/p/AutoMapperContent.html

多字段组合排序(字符串)

渴求:查询名字里面含有“张三”的学员,先按名字排序,再按年龄排序。

澳门永利备用网址 92

澳门永利备用网址 93

哎,不对啊。按名字排序被年龄排序覆盖了。大家应有用ThenBy来组成排序。

澳门永利备用网址 94

澳门永利备用网址 95

不错不错,就是大家想要的作用。如果你不想用ThenBy,且都以升序的话,我们也足以:

澳门永利备用网址 96

澳门永利备用网址 97

扭转的sql是同一的。与OrderBy、ThenBy对应的降序有OrderByDescending、ThenByDescending。

临近好像很周详了。其实不然,我们大多数意况排序是动态的。比方,大家会特别前端页面分歧的操作须求不一样字段的例向外排水序。那我们后台应该怎么做吧?

澳门永利备用网址 98

本来,那样成功是没难点的,只要您愿意。可以那样多大概的决断有没有感觉十三分SB?是的,我们本来有更加好的缓和方案。假诺OrderBy能够直接传字符串???

化解方案:

  1. guget下载System.Linq.Dynamic 
  2. 导入System.Linq.Dynamic命名空间
  3. 编排OrderBy的强大方法

澳门永利备用网址 99

然后上边又长又臭的代码能够写成:

澳门永利备用网址 100

大家看下生成的sql:

澳门永利备用网址 101

和我们想要的功效完全符合,是或不是感觉美美哒!!

【注意】:传扬的排序字段后边要加排序关键字
asc或desc

EF的预热

http://www.cnblogs.com/dudu/p/entity-framework-warm-up.html

推荐MiniProfiler插件

工欲善其事,必先利其器。

咱俩选用EF和在相当的大程度升高了开垦进度,可是随后拉动的是累累性质低下的写法和生成不太高速的sql。

固然我们得以应用SQL Server
Profiler来监察和控制实践的sql,但是个人以为便是麻烦,每一次必要开采、过滤、清除、关闭。

在这里生硬推荐多少个插件MiniProfiler。实时监察页面央求对应实践的sql语句、实行时间。轻便、方便、针对性强。

如图:(切切实实行使和介绍请移步)

澳门永利备用网址 102

EntityFramework.Extended

此地推荐下插件EntityFramework.Extended,看了下,很科学。

最大的优点正是足以一贯批量更换、删除,不用像EF暗中同意的内需先做询问操作。

至于官方EF为啥平昔不提供那样的协助就不驾驭了。不过使用EntityFramework.Extended要求专注以下几点:

  1. 只支持sql server
  2. 批量修改、删除时不能够落到实处职业(约等于出了十一分不可能回滚)
  3. 尚未联级删除
  4. 不能同EF一起SaveChanges
    详见

http://www.cnblogs.com/GuZhenYin/p/5482288.html

在此校勘个难题EntityFramework.Extended并不是说不可能回滚,谢谢@GuZhenYin园友的指正(原谅小编前边从没出手测试)。

专注:需求NuGet下载EntityFramework.Extended,
并导入命名空间: using
EntityFramework.Extensions ;

测试代码如下:(假诺注释掉手抛十分代码是能够直接更新到数据库的)

using (var ctxTransaction = db.Database.BeginTransaction())
{
    try
    {
        db.Teachers.Where(t => true).Update(t => new Teacher { Age = "1" });

        throw new Exception("手动抛出异常");

        ctxTransaction.Commit();//提交事务
    }
    catch (Exception)
    {
        ctxTransaction.Rollback();//回滚事务
    }
}

透明标志符

比如由于各个缘由大家需求写上面那样逻辑的口舌

澳门永利备用网址 103

我们得以写成那样越来越好

澳门永利备用网址 104

看生成的sql就精通了

澳门永利备用网址 105

第三种艺术生成的sql要深透得多,品质也更加好。

lamdba条件构成

渴求:依照不一致景色询问,大概情形

  1. 询问name=“张三” 的装有学生
  2. 查询name=“张三” 或然 age=18的保有学员

完结代码:

澳门永利备用网址 106

是否味到了同样的恶臭澳门永利备用网址 107。上面我们来灵活组装Lamdba条件。

杀鸡取蛋方案:

澳门永利备用网址 108澳门永利备用网址 109

这段代码小编也是从英特网偷的,具体链接找不到了。

然后大家的代码能够写成:

澳门永利备用网址 110

有未有美美哒一点澳门永利备用网址 111。然后大家看看生成的sql是不是科学:

澳门永利备用网址 112