使用NHibernate 2.1 Linq,为什么

本文关键字:为什么 Linq NHibernate 使用 | 更新日期: 2023-09-27 18:15:50

在使用NHibernate 2.1和Linq程序集时,当试图枚举结果或调用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

使用NHibernate 2.1 Linq<T>,为什么

您是否可以将代码更改为以下内容并查看是否有效:

if(ids==null)
{
   Console.WriteLine("Why am I not surprised");
}
var res = rep.Find().Where(y => y!=null && ids.Contains(y.Id));
return res.ToList();