码迷,mamicode.com
首页 > 其他好文 > 详细

Entity Framework Core 之Querying Data

时间:2017-12-20 13:40:39      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:hang   延迟加载   查询   设置   界面   orm   技术分享   准备   表示   

Querying Data

EFCore是使用LINQ语法去数据库中查询数据,查询的声明周期基本如下:

LINQ查询进程准备一个EFCore的核心提供商来准备进行查询,而这个进程会进行缓存不需要每次查询都执行一遍

结果通过数据库提供商:

什么时候执行查询结果动作:

  1. 当有通过循环遍历查询结果的时候,执行查询如for
  2. 当使用如tolist(),toArray(),single(),count等方法的时候执行查询
  3. 将查询结果绑定到UI控件的时候

Basic Query

EF Core使用Linq语法从数据库查询数据,Linq允许使用C#来写强类型的查询语句,常用的Linq查询操作如下

 技术分享图片

1)         加载所有数据:

 技术分享图片

2)         加载单个实体数据

 技术分享图片

3)         过滤数据查询:

 技术分享图片

Loading Related Data

EF Core允许通过导航属性加载跟实体关联的相关实体信息,有三种加载方式:

ü  Eager loading(立即加载)表示查询将作为连接数据库时的一部分定义查询

默认情况下EF Core都会自动预加载导航属性,所以当需要显示加载的时候就可以通过include方法来加载关联实体信息,且可通过多层连接关系加载单个实体

 技术分享图片

还可通过ThenInclude方法来加载多重关系中的单个实体信息,比如加载所有blogs且通过导航属性加载每篇blog的作者,然后通过作者的关联实体加载作者的图片。

 技术分享图片

ü  Explicit loading(显式加载)通过DbContext.Entry()显式的加载查询数据,t

 技术分享图片

查询关联的导航属性实体

 技术分享图片

ü  Lazy loading(延迟加载)表示相关数据通过访问导航属性时加载

目前暂不支持

Tracking&No-Tracking

实体信息跟踪行为用来跟踪实体信息是否更新改变,当一个实体被标记则它的更改将会被追踪直到调用SaveChanges()

1)         Tracking queries

默认情况查询是返回被跟踪的实体类型,意味着可以在调用SaveChanges方法前更改信息。如下示例显示通过查询数据,然后通过查询的实体更新信息,最后保存

 技术分享图片

2)         No-Tracking queries

未追踪查询一般是用于只读场景中,因为没有被追踪所以执行迅速

 技术分享图片

当然也可以通过数据库上下文的查询行为来设置

 技术分享图片

3)         Tracking and Projections

 

Raw SQL Queries(SQL语句查询)

在关系数据库中允许使用原始SQL语句进行查询

ü  SQL语句查询只能返回模型中的实体类型

ü  所有SQL语句查询必须返回数据实体类型的属性

ü  结果集的列名必须匹配到属性映射到表的名称

ü  原始SQL查询不能包含关联实体的查询

1)         Baseic Raw SQL queries:通过fromsql扩展方法进行查询

 技术分享图片

同样也可以执行存储过程

 技术分享图片

2)         Pass parameters

在使用SQL语句时,可以传递参数进去,传参共有两种方式:

l  通过string.Format函数格式化

 技术分享图片

l  通过SqlParameter进行参数格式化

 技术分享图片

3)         Composing with LINQ

可以将SQL语句查询跟LINQ语句查询结合使用

 技术分享图片

技术分享图片

Asynchronous queries(异步查询)

异步查询可以在数据库中执行查询时避免阻塞一个线程,非常实用于UI界面等待过程,同样在web程序中也是可以释放线程来执行其他请求。在EFCore中凡是包含ToListAsyn()、ToArrayAsyn()、SingleAsyn()等都是异步,而Linq的where()、orderby()是没有实用异步的

技术分享图片

 

Entity Framework Core 之Querying Data

标签:hang   延迟加载   查询   设置   界面   orm   技术分享   准备   表示   

原文地址:http://www.cnblogs.com/Terrece/p/8072153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!