後,我是新來的實體框架(核心),我面臨着與延遲加載一些問題,我想。EF:導航屬性爲null甚至訪問它或刪除虛擬關鍵字
我有以下簡單的數據模型一對一關係:
User ----- AccessToken
用戶:
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public virtual AccessToken AccessToken { get; set; }
}
的accessToken:
public class AccessToken
{
public int Id { get; set; }
public string Token { get; set; }
[ForeignKey("User"), Required]
public int UserId { get; set; }
public virtual User User { get; set; }
}
現在,當我試圖讓使用用戶導航道具的用戶的AccessToken erty它總是空:
var t1 = Context.Find<User>(user.Id);
var t2 = t1.AccessToken;
var t3 = Context.Find<User>(user.Id).AccessToken;
我也試圖從沒有成功的導航屬性中刪除virtual
關鍵字。
有人會幫我解決這個問題嗎?
您使用EF Core嗎? (我看到你的問題被標記爲EF6,但我仍然相信你使用核心)EF核心不支持延遲加載,請參閱http://stackoverflow.com/a/42596737/455493。請使用搜索,它的第二或第三個問題在48小時內 – Tseng
@Tseng好吧,我需要使用包括。謝謝。 –
ok微軟提到這一點:'實體框架核心將自動修復導航屬性到以前加載到上下文實例中的任何其他實體。因此,即使您沒有明確包含導航屬性的數據,如果某些或所有相關實體先前已加載,該屬性仍可能被填充。「但實際上並未發生!如果我理解正確的話。 –