在實體框架核心文檔的this page,它加載查詢數據時說:我可以阻止Entity Framework Core使用部分數據填充結果嗎?
實體框架的核心會自動修復式導航性能,以先前加載到上下文實例任何其他實體。因此,即使您沒有明確包含導航屬性的數據,如果先前加載了一些或所有相關實體,該屬性仍可能被填充。
這是真實的它是否是渴望或明確。
我覺得這很令人沮喪,因爲它會返回部分數據,這使得它看起來像一個完整的列表,因爲沒有任何數據表明它是部分的。
例子:
說我有以下兩類:
class User {
int Id { get; set; }
string Name { get; set; }
List<Message> Messages { get; set; }
}
class Message {
int Id { get; set; }
List<User> Users{ get; set; }
}
我查詢使用下面的代碼:
_dbContext.Users
.Include(u => u.Messages)
.Single(u => u.Id == 1);
我的輸出如下:
"user" {
"id": 1,
"name": "Alice",
"messages": [
{
"id": 1,
"users": [
{
"id": 1,
"name": "Alice",
}
]
}
]
}
我認爲,除非我也加了.ThenInclude(m => m.Users)
,它會給我一個空或空列表,而不是一個部分列表。
[如何防止EF7急切修復導航屬性?](http://stackoverflow.com/questions/35438600/how-can-i-prevent-ef7-from-eagerly-fixing-up - 導航屬性) – Romoku
@Romoku我真的不知道這將是如何重複的問題。 – bdrelling