我有一个EntityRepository中存在的泛型方法,它通过Name获取实体,其定义如下:
public IEnumerable<T> GetEntitiesByName<T>(string searchExpression)
where T : class, ISearchableEntity, new()
{
return _session.CreateCriteria<T>()
.Add(LambdaSubquery.Property<Fund>(x => x.Id)
.AddNameSearchCriteria<T>(searchExpression)
.List<T>();
}
有许多服务使用这种方法,一切都很好..但我现在要求某些服务需要比此方法更具体的搜索功能。
所以我想知道我是否可以将DetachedCriteria传递给我可以插入查询的表达式(或其他东西)?每个需要不同功能的服务都可以传递它所需的表达式。
我对NHibernate或Expressions并不是很熟悉,所以我可能在这里不够深入。我主要是想要了解可能的事情。否则,我将不得不放弃泛型方法,而是为每个服务使用更具体的Repository方法。感谢。
答案 0 :(得分:0)
我在my answer to a somewhat similar question中发布了一个可能对您有帮助的代码示例。然而,这只是一个艰难的开始。如果你真的想将完整的LINQ表达式翻译成NHibernate并且有一些完整性,我建议先搜索现有的解决方案。 Google快速搜索就找到了我: