【发布时间】:2011-11-28 07:56:18
【问题描述】:
当使用带有 Linq 程序集的 NHibernate 2.1 时,我们在尝试枚举结果或调用 ToList() 时遇到异常。
我们有一个Id的列表,我们想获取它们的记录,我们使用了以下代码
public List<TEntity> GetAllContainsItems<TEntity>(List<int> ids)
where TEntity : IEntity
{
using (IUnitOfWork uof = _container.Resolve<IUnitOfWork>())
{
uof.Initialize();
IRepository<TEntity> rep
= _container.Resolve<IRepository<TEntity>>();
// repository exposes the ISession.Linq<T> of nhibernate.
var res = rep.Find().Where(y => ids.Contains(y.Id) );
// get the exception:
// "Object reference not set to an instance of an object."
return res.ToList();
}
}
有什么想法吗?
附: 我们暂时无法更改 Dll。
【问题讨论】:
-
Select(x => x) 似乎是多余的。有什么具体原因吗?
-
另外,难道
ids就是null?我建议您在方法的顶部检查它,如果是,则抛出ArgumentNullException。 -
抱歉,Select 是我的检查,它不应该存在。 ids 不为空,在执行 Find() 时我得到所有记录
-
您是否有堆栈跟踪来指示异常源自哪个组件?
标签: c# linq nhibernate