EF Core Navigation Property Cycle

时间:2018-04-30 16:33:18

标签: c# .net-core entity-framework-core ef-core-2.0

考虑以下

型号:

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

一切正常,问题是我获取博客它包含帖子,其中包含博客,其中包含< strong>帖子,其中每个都包含博客 等等。

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

EntityFramework通过将实际查询替换(覆盖)其功能与数据库进行交互来处理bolt。这种方法称为navigation properties

这意味着,每次访问该属性时,它只是调用数据库并为您提供数据,并且可以在您请求时永久执行此操作。

我希望能解释一下吗?

可以找到进一步的解释here

此致