2011-10-22 188 views
0

我使用實體框架4.1(代碼前)爲O/R映射框架:實體框架加載

我有三個實體:郵政,PostForUser和用戶,而PostForUser正好與一個郵政和一個用戶相關聯的。

現在我想獲取所有帖子給定用戶,另外加載這創造職位的用戶:

var posts = _dbContext.PostsForUser 
    .Include("Post.ByUser") 
    .Where(x => x.WasRead == false && x.User.Id == CurrentUser.Id) 
    .Select(x => x.Post) 
    .ToArray(); 

使用上面的查詢中,「ByUser」屬性不會裝載。我根本不使用延遲加載,但仍然無法正常加載。

沒有任何自定義映射配置或特殊約定註冊。只需以下實體定義:

public class Post 
{ 
    public int Id { get; set; }   
    public string Content { get; set; } 
    public DateTime Date { get; set; } 
    public User ByUser { get; set; } 
} 

public class PostForUser 
{ 
    public int Id { get; set; } 
    public User User { get; set; } 
    public Post Post { get; set; } 
    public bool WasRead { get; set; } 
} 

回答

0

你包括.Include("Post.ByUser")適用於PostForUser,但你在選擇Post所以在包括應該去和選擇的:

var posts = _dbContext.PostsForUser 
      .Where(x => x.WasRead == false && x.User.Id == CurrentUser.Id) 
      .Select(x => x.Post).Include("ByUser") 
      .ToArray(); 
+0

謝謝,這解決了我的問題。你知道什麼導航屬性自動加載而不需要使用「Include」子句嗎? – ollifant