是否可以创建一个通用的Session.QueryOver ?
出于好奇,可以使用NHibernate 3做这样的事情吗?
public IQueryable FindAll() { return Session.QueryOver().List().AsQueryable(); }
我得到一个编译错误,说像……
类型T必须是引用类型才能将其用作参数T.
我想知道我是否可以创建一个Session.QueryOver的扩展方法来处理generics类型。
我可以用类似的东西替换它
return Session.CreateCriteria(typeof (T)).List().AsQueryable();
但是热衷于使用查询api的function。 有任何想法吗? 也许缺少明显的东西!
你错过了对T
的限制:
public IQueryable FindAll () where T : class { return Session.QueryOver ().List().AsQueryable(); }
where T : class
定义T
必须是引用类型。 (由于需要编译错误,因此QueryOver
仅限于引用类型)。 如果类型参数应用了约束,则使用此方法及其自身的generics参数的任何generics方法都必须应用类似的约束。
有关generics类型参数约束的完整概述,请参阅msdn 。