在EF Core中加载相关实体会导致大量数据库旅行

时间:2019-11-14 16:54:38

标签: c# entity-framework-core ef-code-first

我有以下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个获取护照? 预先谢谢你

1 个答案:

答案 0 :(得分:0)

您应该使用连接操作通过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
        }

我建议您将passwordId属性添加到Person类中。