【问题标题】:Pass Expression as a parameter into a Generic method, and plug the Expression into a CreateCriteria?将表达式作为参数传递给通用方法,并将表达式插入 CreateCriteria?
【发布时间】:2010-08-10 10:49:53
【问题描述】:

我有一个存在于EntityRepository中的通用方法,它通过名称获取实体,定义如下:

    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 不是很熟悉,所以我在这里可能超出了我的深度。我主要是想了解什么是可能的。否则,我将不得不放弃通用方法,转而为每个服务使用更具体的存储库方法。谢谢。

【问题讨论】:

    标签: c# nhibernate generics lambda


    【解决方案1】:

    我在my answer to a somewhat similar question 中发布了一个代码示例,可能会对您有所帮助。然而,这只是一个艰难的开始。如果您真的想将完整的 LINQ 表达式转换为 NHibernate 并具有一些完整性,我建议您先搜索现有的解决方案。一个快速的谷歌搜索发现我这个:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多