是否可以创建一个通用的Session.QueryOver <T>?

Aim*_*Kai 8 c# nhibernate

出于好奇,可以使用NHibernate 3做这样的事情吗?

public IQueryable<T> FindAll<T>()
{
   return Session.QueryOver<T>().List().AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)

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

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

我想知道我是否可以创建Session.QueryOver的扩展方法来处理泛型类型.

我可以用类似的东西替换它

return Session.CreateCriteria(typeof (T)).List<T>().AsQueryable();
Run Code Online (Sandbox Code Playgroud)

但是热衷于使用查询api的功能.有任何想法吗?也许错过了一些明显

Fem*_*ref 11

你错过了一个限制T:

public IQueryable<T> FindAll<T>() where T : class
{
   return Session.QueryOver<T>().List().AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)

where T : class定义T必须是引用类型.(由于需要编译错误,QueryOver<T>因此仅限于参考类型).如果类型参数应用了约束,则使用此方法及其自身的泛型参数的任何泛型方法都必须应用类似的约束.

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