簡體   English   中英

延遲加載和渴望加載-如何檢查?

[英]Lazy loading and eager loading - how can I check that?

我有POCO實體類型:

public class Blog 
{  
    public int BlogId { get; set; }  
    public string Name { get; set; }  
    public string Url { get; set; }  
    public string Tags { get; set; }  

    public virtual ICollection<Post> Posts { get; set; }  
}

如何在Visual Studio調試器中檢查此查詢僅獲取Blog:

var result1 = context.Blog.ToList();

此查詢將Blog和Posts一起作為查詢的一部分:

var result2 = context.Blog.Include(x => x.Posts).ToList();

可能嗎?

在上下文中查找有關延遲加載的屬性(context.Configuration.LazyLoadingEnabled),並禁用它,在result1.Posts上添加一個監視,並且不應加載任何內容。

相反,結果2.郵件應接受檢查。 當然,這取決於要連接的數據庫中的條目!

如果啟用了延遲加載,則另一個有名的跡象是Posts,collection上的代理對象,該對象的名稱將為一個奇怪的名稱。

我建議調試器不是監視此類內容的正確位置。 相反,我將使用SQL Server Profiler或EFProf之類的專用工具。

當然,兩難選擇是,一旦您訪問博客。發布您將獲得項目,但那一刻您無法告訴它們何時/如何加載。 (如果您不監視SQL)。

您可以100%確定是否檢查本地集合:

var result1 = context.Blog.ToList();
var postsLoaded = context.Posts.Local.Any(); // false.


var result2 = context.Blog.Include(x => x.Posts).ToList();
var postsLoaded = context.Posts.Local.Any(); // true. 
// (if Blogs having Posts were loaded)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM