出于好奇,是否可以使用NHibernate 3做类似的事情?

public IQueryable<T> FindAll<T>()
{
   return Session.QueryOver<T>().List().AsQueryable();
}

我收到一个编译错误,说类似...

类型T必须是引用类型,才能将其用作参数T。

我想知道是否可以为Session.QueryOver创建扩展方法来处理通用类型。

我可以用类似的东西代替
return Session.CreateCriteria(typeof (T)).List<T>().AsQueryable();

但是热衷于使用查询api的功能。有任何想法吗?也许缺少明显的东西!

最佳答案

您缺少对T的限制:

public IQueryable<T> FindAll<T>() where T : class
{
   return Session.QueryOver<T>().List().AsQueryable();
}
where T : class定义T必须是引用类型。 (由于需要编译错误,因此QueryOver<T>仅限于引用类型)。如果类型参数已应用约束,则任何使用此方法且具有其自身通用参数的通用方法都必须应用类似的约束。

有关泛型类型参数约束的完整概述,请参见msdn

关于c# - 是否可以创建通用Session.QueryOver <T>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3795762/

10-12 12:49
查看更多