在 EF Core 中加载相关数据

Posted

技术标签:

【中文标题】在 EF Core 中加载相关数据【英文标题】:Loading related data in EF Core 【发布时间】:2020-09-23 20:37:28 【问题描述】:

我有一个关于 Entity Framework Core 的问题。假设有一个 DbContext 提供与 2 个实体的工作:Person int Id; int PassportId; Passport Passport Passport int Id; int PersonId; Person Person

作为查询的结果

Person person = context.Person.Include(p => p.Passport).FirstOrDefault();

我得到了 Person 对象(person),它指的是 Passport 的对象。但是,Passport 对象中也有对 person 的引用。

怎么样?为什么将 Passport 对象隐式绑定到 Person 对象提供?我似乎是由于导航属性并且它们以两种方式工作。请分享信息。

【问题讨论】:

【参考方案1】:

你得到一个循环引用,你是否启用了延迟加载? 如果引用导致异常,您可以使用它来避免它。

services.AddMvc()
.AddJsonOptions(options => 
    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
);

【讨论】:

以上是关于在 EF Core 中加载相关数据的主要内容,如果未能解决你的问题,请参考以下文章

在内存中加载相关对象(没有 ORM)

在一个视图 asp.net 中从多到多相关表中加载数据

ef core 相关

ORM(Linq-SQL EF)是不是从表中加载整个数据集?

EF Core 调用具有多个连接的存储过程并映射相关数据

EF Core - 添加相关实体时出错