我首先在通用存储库中使用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