我首先在通用存儲庫中使用ef4代碼。我的倉庫有類似如下的選擇方法:EF4 linq非null對象上的NullReferenceException
public IEnumerable<T> Select(Func<T, bool> predicate)
{
return objectSet.Where(predicate);
}
我用下面的代碼
pushQueueRepository.Select(x => x.User.ID == user.ID && x.PageID == pageID);
稱之爲*注 - pushQueueRepository已正確實例化。
當我運行這個我得到一個NullReferenceException。當我在拋出異常後的調試中看到它時,它顯示錯誤是x.User.ID == user.ID.當我將鼠標移到x.User上時,它是空的。然而,當我展開x我們有一個用戶對象在x.User(非空),確實有一個id。
FYI x是PushQueue對象定義爲這樣:
public class PushQueue : IEntity
{
...
[Required]
public User User { get; set; }
...
}
這似乎並不正確,我失去的東西嗎?
謝謝。
這對我來說非常合適。謝謝您的幫助。 – jimox 2010-11-15 06:22:41
好解釋!請注意,您不能輸入任何謂詞的任意函數。它需要由數據存儲直接計算。 – 2010-11-16 16:50:06