繁体   English   中英

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);

所有这一切都有效,然后问题出在我抓取的博客中 ,其中包含一个帖子 ,其中包含一个博客 ,该博客包含一个帖子列表,每个帖子列表都包含博客 ,依此类推。

在此处输入图片说明

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

我认为您根本不能限制它。 但我也不认为这会引起任何问题。

EntityFramework通过将navigation properties功能替换为对数据库的实际查询来处理其navigation properties功能。 这种方法称为LazyLoading

这意味着,每次您访问该属性时,它都只会调用数据库并为您带来数据,并且可以根据您的请求永久执行此操作。

我希望能解释吗?

这里可以找到进一步的解释。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM