我的目标是实现这样的目标:
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
我遇到的问题是将“查询”转换为“别名”,因为类型明显不同。这是徒劳的任务吗?有没有实现我的目标?
答案 0 :(得分:0)
虽然我不使用NHibernate,但似乎你的类型签名是不同的。您的Get方法应该接受System.Linq.Expressions.Expression<Func<T, bool>>
类型的参数。这样您就可以将它传递给QueryOver方法,该方法接受相同类型的参数。