c# - 在 EF Core 中加载相关实体会导致大量 db trips
问题描述
我有以下 ef 核心模型
public class Person
{
public int Id { get; set; }
public Passport Passport { get; set; }
}
public class Passport
{
public int Id { get; set; }
public string Number { get; set; }
}
进行请求时,如下所示:
.Include(x => x.Passport)
.Select(x => new
{
PersonId = x.Id,
PassportNumber = x.Passport.Number
})
我观察到每个用户 EF Core 都会访问数据库以获取护照。因此,如果人数为 10,则 10 请求将转到 db 以获取护照实体。有没有什么办法可以做 1 个请求而不是 10 个来获取护照?先感谢您
解决方案
您应该通过带有连接操作的 linq 更改代码。
var q = from p in context.Persons
join pa in context.Passport
on p.PassportId equals pa.Id
select new
{
PersonId = p.Id,
PassportNumber = pa.Number
}
我建议您将 passportId 属性添加到 Person 类中。
推荐阅读
- json - 在 SwiftUI 中将 JSON 数据作为对象加载
- python - 为什么 GIF 的这种 MPEG-4 压缩会产生奇怪的结果?
- android - 从图库中挑选图像时丢失与设备的连接错误
- multithreading - Quarkus Reactive Messaging 不使用 JMS 连接器和 SmallRye 实现启动单独的线程
- python - 试图在文件中找到最长的单词 - Python
- python - 无法跳过龙卷风 python 测试类中的某些方法
- r - 多列 t 检验的一个微妙问题
- mysql - 如何在某个级别上获得用户的位置?(mysql)
- javascript - 如何使用 vuejs 获取数据的函数
- cassandra - 遇到“Could not reserved enough space for 2097152KB object heap”