Entity Framework Core 之Querying Data

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()是没有实用异步的

时间: 2024-10-13 08:38:48

Entity Framework Core 之Querying Data的相关文章

Entity Framework Core 2.0 入门简介

不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Functions.Like() Linq解释器的改进 全局过滤(按类型) 编译查询(Explicitly compiled query) GroupJoin的SQL优化. 映射: Type Configuration 配置 Owned Entities (替代EF6的复杂类型) Scalar UDF映

UWP开发之ORM实践:如何使用Entity Framework Core做SQLite数据持久层?

选择SQLite的理由 在做UWP开发的时候我们首选的本地数据库一般都是Sqlite,我以前也不知道为啥?后来仔细研究了一下也是有原因的: 1,微软做的UWP应用大部分也是用Sqlite.或者说是微软推荐使用Sqlite吧! 2,简单!就只有一个类库没有多余的参照什么的.不像其他数据库还得做复杂配置什么的麻烦! 3,不需要数据库服务,数据服务和客户都在同一个进程里面.如下图: 4,作为存储系统它只支持一个用户一个数据实体. 5,跨平台跨结构,这个好! Sqlite主要使用内容 如果想充分使用好S

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添加一个User类: namespace MyFirstApp.Models { public class User { public int ID { get; set; } public string Name { get; set; } public string Email { get; se

[UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)

前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Entity Framework Core(Entity Framework 7)下文将简称:EF 1.在UWP中使用EF需要更新Microsoft.NETCore.UniversalWindowsPlatform到大于“5.2.2”的版本. 2.直接在“程序包管理器控制台”输入命令来更新:Update-P

使用Entity Framework Core Code First创建SQLite数据库

Entity Framework Core(以下简称"EF Core")支持多种数据库.在这篇文章中,我们看看如何使用EF Core的Code First方式创建SQLite数据库 下载SQLite,解压后会得到三个文件,放到c:\sqlite目录下 我们先创建一个.NET Core控制台程序 添加EF Core for SQLite组件库 "dependencies": { "Microsoft.EntityFrameworkCore.Sqlite&qu

全球首发免费的MySql for Entity Framework Core

from:http://www.1234.sh/post/pomelo-data-mysql?utm_source=tuicool&utm_medium=referral Source 源代码在GitHub中以MIT协议开源: Pomelo.Data.MySql Pomelo.EntityFrameworkCore.MySql Background 一时兴起,想实现.NET Core下的MySQL ADO层和与Entity Framework Core对接,同时也是非常鄙视某厂商借着目前Orac

Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core

本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 38 Entity Framework Core ----------------------------------------------------------------------- What's In This Chapter? Introducing Entity Framework Core 1.0 Using Depe

使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程

原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web application demonstrates how to create ASP.NET Core 1.0 MVC web applications using Entity Framework Core 1.0 and Visual Studio 2015. Contoso University网络应用的案

NET Core & Entity Framework Core

本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 官方文档分四部分 一. 教程文档 二.ABP 框架 三.zero 模块 四.其他(中文翻译资源) 本篇是第一部分的第一篇. 第一部分分三篇 1-1 手把手引进门 1-2 进阶 1-3 杂项 (相关理论知识) 第一篇含两个步骤. 1-1-1 ASP.NET Core & Entity Framework Core 后端(内核)含两篇 (第二篇链接) 1-1-2 ASP.NET MVC, Web API, EntityFramework &