使用NHibernate 2.1 Linq <t>时出现异常,为什么?</t>

时间:2011-11-28 07:56:18

标签: c# linq nhibernate

当使用带有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();
    }
}

有什么想法吗?

P.S。 我们现在无法更改Dll。

1 个答案:

答案 0 :(得分:0)

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

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();