0

我的目标是实现这样的目标:

IList<People> peeps = _peopleRepository.Get<People>(x.Name == "dan");   
//signature looks like this:  IList<T> Get<T>(Func<T, bool> query) where T : IEntity;

这将在内部执行此操作:

_sessionFactory.GetCurrentSession().QueryOver<People>(x.Name=="dan").List();
//NHibernate.IQueryOver<T,T> QueryOver<T>(System.Linq.Expressions.Expression<Func<T>> alias)
where T : class

我遇到的这个问题是将我的“查询”转换为“别名”,因为类型明显不同。这是徒劳的任务吗?有没有实现我的目标?

4

1 回答 1

0

虽然我不使用 NHibernate,但您的类型签名似乎不同。您的 Get 方法应该接受 type 的参数System.Linq.Expressions.Expression<Func<T, bool>>。这样,您可以将其传递给接受相同类型参数的 QueryOver 方法。

于 2012-06-13T15:20:31.550 回答