EF 核心导航 属性 循环

EF Core Navigation Property Cycle

考虑以下因素

型号:

public class Blog
{
    public Guid ID {get; set;}
    public string Name {get; set;}
    // more fields...

    // Navigation Property
    public IList<Post> Posts {get; set;}
}

public class Posts
{
    public Guid ID {get; set;}
    public Guid BlogID {get; set;}
    public string Author {get; set;}
    // more fields...

    // Navigation Property
    public Blog Blog {get; set;}
}

DbContext.OnModelCreating:

// Primary Keys
modelBuilder.Entity<Blog>()
            .HasKey(c => c.ID);

modelBuilder.Entity<Post>()
            .HasKey(c => c.ID);

modelBuilder.Entity<Blog>()
            .HasMany(c => c.Posts)
            .WithOne(c => c.Blog)
            .HasForeignKey(c => c.BlogID)
            .HasPrincipalKey(c => c.ID);

modelBuilder.Entity<Post>()
            .WithOne(c => c.Blog)
            .HasMany(c => c.Posts)     
            .HasForeignKey(c => c.BlogID)
            .HasPrincipalKey(c => c.ID);

一切正常,问题是我获取了一个 Blog 它包含一个 Post 其中包含 Blog 其中包含 Posts 的列表,每个列表都包含 Blog 等等。

如何将其限制为特定的嵌套级别? 我检查了 docs,但找不到解决方案。

我认为你根本无法限制它。但我也不认为这会导致任何问题。

EntityFramework 通过用对数据库的实际查询替换(覆盖)它们的功能来处理 navigation properties。这种方法称为 LazyLoading.

这意味着,每次您访问 属性,它只是调用数据库并为您带来数据,而且它可以一直这样做,只要您提出请求。

我希望解释清楚?

可以找到进一步的解释 here

此致