簡體   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