Вы можете сделать свой ссылочный тип универсальным, используя TheMappedType.MakeGeneric (params), а затем использовать его в методе QueryOver.И если вы передадите какую-либо лямбда-функцию в свой репозиторий, она автоматически переведет ее в ваш общий тип.
Я сделал следующее в своем репозитории
System.Linq.Expressions.Expression<Func<Employee, bool>> expression = items => items.Name == "abc";
IList employeeList = Repository<Employee>.FindRecords(expression)
, и класс репозитория имеет следующиеМетод:
Repository<T>
{
IList< T > FindRecords(System.Linq.Expressions.Expression<Func<T, bool>> expression)
{
return Session.QueryOver<T>().Where(expression).List();
}
}