首页 > 解决方案 > 在 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 个来获取护照?先感谢您

标签: c#entity-framework-coreef-code-first

解决方案


您应该通过带有连接操作的 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 类中。


推荐阅读