【发布时间】:2019-09-06 08:11:08
【问题描述】:
我在 .NET 核心中使用如下代码
.Include(p => p.Company).ThenInclude(p => p.Country).ToList();
我的课程如下所示,
public partial class Company
{
public Guid Id { get; set; }
public string Name { get; set; }
public virtual Country Country { get; set; }
}
public partial class Country
{
public Country()
{
Companies = new HashSet<Company>();
}
public Guid Id { get; set; }
public string Name { get; set; }
public string ShortCode { get; set; }
public virtual ICollection<Company> Companies { get; set; }
}
而且我希望只填充公司,然后填充公司中的国家/地区。但是我让公司在国家内部,然后在这些公司中填充国家等等,这导致响应延迟。
我已经尝试过 Google/StackOverFlow 上包含的不同示例。
【问题讨论】:
-
请使用正确标签并提及您使用的EF Core版本。
Include()是一种 EF Core 方法,不是 .NET Core 或 ASP.NET Core 的一部分。也发布您的代码 - 类是什么样的,实体是如何配置的?.SerializerSettings.ReferenceLoopHandling与 EF Core 无关,是 JSON 设置 -
您没有发布任何配置代码。像this one 这样的循环引用有很多问题。这个问题显示了所需的代码 -
OnModelCreating中的类、配置和 actual 查询,而不仅仅是其中的一部分。 -
你是否在 EF 上启用了延迟加载?
-
@PanagiotisKanavos 如果有标准以外的东西,我会添加配置。我使用脚手架创建了模型和上下文,一切都非常标准。进一步感谢您指出问题,我面临的问题确实相关且几乎相同,但不幸的是,该问题没有可接受的答案。
-
EF Core 就是这样工作的,而且无法控制。此外,EF Core 本身在处理循环引用方面没有问题。实际问题在于Related data and serialization 文档主题中提到的序列化程序。如果您需要完全控制包含的内容,则不应使用实体类和
Include功能,而应使用 DTO/ViewModel 类和投影 (Select) 查询。
标签: .net-core entity-framework-core circular-reference