如何使用EF Core加載導航屬性?

entity-framework entity-framework-core

在EF6中我們有這樣的選擇:

context.Set<TEntity>().Attach(entity);
context.Entry(entity).Collection("NavigationProperty").Load();

由於EF Core“100%嚴格打字”,他們已經刪除了Collection功能。但應該用什麼呢?

補充:我的意思是如何為ATTACHED實體加載包含/“導航集合屬性”?

一般承認的答案

在Entity Framework Core v1.1中添加了顯式加載。請參閱Microsoft Docs

來自文檔:

using (var context = new BloggingContext())
{
    var blog = context.Blogs
    .Single(b => b.BlogId == 1);

    context.Entry(blog)
        .Collection(b => b.Posts)
        .Load();

    context.Entry(blog)
        .Reference(b => b.Owner)
        .Load();
}

熱門答案

你有2種方法。

1.急切加載

例如

var blogs = context.Blogs
    .Include(blog => blog.Posts)
    .ToList();

2.明確加載

例如

var blog = context.Blogs
    .Single(b => b.BlogId == 1);

context.Posts
    .Where(p => p.BlogId == blog.BlogId)
    .Load();

您可以在此處閱讀更多相關信息加載相關數據

更新:

您可以將TrackGraph API用於該用例。這是鏈接: 添加/附加的圖形行為

另一個鏈接: DbSet.Add / Attach和圖形行為



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因