2012-10-30 20 views
2

我有3個實體(MasterDoc,文件夾,用戶),我在另一個實體(Folder_User)鏈接在一起。失去對查詢子對象的引用

public class Folder_User 
{ 
    public int Id { get; set; } 
    public MasterDoc MasterDoc { get; set; } 
    public User User { get; set; } 
    public Folder Folder { get; set; } 
} 

IVE插入型Folder_User的一個對象後到數據庫中,我可以(在相同的DbContext)查詢它和retreive的子對象。

public static List<Folder_User> GetAllFolder_USer(User user, DataModel dbContext) 
    { 
     List<Folder_User> list = null; 

     var query = from f in dbContext.Folder_User 
        where f.User.Id == user.Id 
        select f; 

     list = new List<Folder_User>(query); 
     return list; 
    } 

但在頁面刷新(新的dbcontext),當我運行相同的查詢時,引用到MasterDoc的對象爲空。我試過了懶加載,但似乎沒有解決它。 *還檢查了數據庫,並且該表正確包含具有MasterDoc ID的行。

+2

嘗試使用使用(debcontext =新的DataModel)各次ü調用方法 –

+1

添加ToList()爲沒把握的DbContext的影響。由於LINQ延遲執行。 – InContext

+0

這就是list = query.ToList ()來觸發執行,就像Philip Barnes指出的那樣,因爲這裏的查詢是IQuerable類型的,這可能是由於延遲執行造成的。 – michaelalm

回答

1

您需要Include在查詢中MasterDoc

public static List<Folder_User> GetAllFolder_USer(User user, DataModel dbContext) 
{ 
    var query = dbContext.Folder_User. 
          Include(f => f.MasterDoc). 
          Where(f => f.User.Id == user.Id); 

    return query.ToList(); 
}