實體框架核心中沒有嵌套結果

asp.net-core c# entity-framework-core

我在C#中有一個奇怪的行為,它是一個帶有EF Core 1.1.0的.NET核心項目

"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",

我創建了兩個模型,“用戶”和“組”

 public class User
 {
    public int Id { get; set; }
    public string name { get; set; }
    public string lastName { get; set; }

    public List<Group> Groups { get; set; }
 }

 public class Group
 {
    public int Id { get; set; }
    public string groupName { get; set; }
    public virtual User User { get; set; }
 }

結果可以給我一個用戶列表他的組。

現在奇怪的部分:

結果從DB返回,我查看allUser,Groups is Null

我將查看上下文以查看組

小組填寫:

團體被填補

現在我再次查看所有用戶結果,並神奇地在每個用戶項目內填充組。

組內填充用戶:

組內填充用戶

我非常感謝任何幫助!!

一般承認的答案

看起來你是懶惰加載實體。

您可以使用.Include來加載它們。

 var allUsers = context.Users.Include(user => user.Groups).ToList();

此方法將第一個實體(用戶)以及相關實體作為查詢(組)的一部分加載。


熱門答案

此行為來自加載實體的懶惰。

默認情況下,您必須手動加載每個子實體。它被稱為急切加載。

為了急切加載您的實體,您必須在每個導航屬性上使用.Include()方法。

例如context.User.Include(x => x.Groups)

Include方法生成一個新的SQL語句,以從數據庫中檢索您的組。

然後,您可以使用ToList()方法強制執行查詢。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow