如何通过ASP.NET Core使用Entity Framework进行复杂查询以获取长尾词数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1647个文字,预计阅读时间需要7分钟。
1. 查询生命周期+在输入主题时,我们先来了解EF+Core查询的生命周期。 1.1 LINQ查询将由Entity Framework Core处理,并生成数据库可识别的程序可处理的表达形式(简单来说就是生成数据库能识别的查询语句)。
1.查询生命周期
在进入正题时候,我们先来了解EF Core查询的生命周期。
1.1LINQ查询会由Entity Framework Core处理并生成给数据库提供程序可处理的表示形式(说白了就是生成给数据库可识别数据形式)。
- 发送的查询结果(查询表示形式)会被缓存,以便每次执行查询时无需进行1.1中处理。
1.2查询结果(查询表示形式)会传递到数据库提供程序
- 数据库提供程序会识别出查询的哪些部分可以在数据库中求值。
- 查询的这些部分会转换为特定数据库的查询语言(例如,关系数据库的T-SQL)。
- 一个或多个查询会发送到数据库并返回结果集(返回的是数据库中的值,而不是实体实例中的)。
1.3对于结果集中的每一项
1.3.1如果这是跟踪查询(后续会讲到),EF会检查数据是否表示已在上下文实例的更改跟踪器中的实体中。
- 如果是,则会返回现有实体。
- 如果不是,则会创建新实体、设置更改跟踪并返回该新实体。
1.3.2如果这是非跟踪查询(后续会讲到),EF会检查数据是否表示已在此查询的结果集中的实体中。
- 如果是,则会返回现有实体。非跟踪查询使用弱引用跟踪已返回的实体。如果具有相同标识的上一个结果超出范围,并运行垃圾回收,则可能会获得新的实体实例。
本文共计1647个文字,预计阅读时间需要7分钟。
1. 查询生命周期+在输入主题时,我们先来了解EF+Core查询的生命周期。 1.1 LINQ查询将由Entity Framework Core处理,并生成数据库可识别的程序可处理的表达形式(简单来说就是生成数据库能识别的查询语句)。
1.查询生命周期
在进入正题时候,我们先来了解EF Core查询的生命周期。
1.1LINQ查询会由Entity Framework Core处理并生成给数据库提供程序可处理的表示形式(说白了就是生成给数据库可识别数据形式)。
- 发送的查询结果(查询表示形式)会被缓存,以便每次执行查询时无需进行1.1中处理。
1.2查询结果(查询表示形式)会传递到数据库提供程序
- 数据库提供程序会识别出查询的哪些部分可以在数据库中求值。
- 查询的这些部分会转换为特定数据库的查询语言(例如,关系数据库的T-SQL)。
- 一个或多个查询会发送到数据库并返回结果集(返回的是数据库中的值,而不是实体实例中的)。
1.3对于结果集中的每一项
1.3.1如果这是跟踪查询(后续会讲到),EF会检查数据是否表示已在上下文实例的更改跟踪器中的实体中。
- 如果是,则会返回现有实体。
- 如果不是,则会创建新实体、设置更改跟踪并返回该新实体。
1.3.2如果这是非跟踪查询(后续会讲到),EF会检查数据是否表示已在此查询的结果集中的实体中。
- 如果是,则会返回现有实体。非跟踪查询使用弱引用跟踪已返回的实体。如果具有相同标识的上一个结果超出范围,并运行垃圾回收,则可能会获得新的实体实例。

