代码之家  ›  专栏  ›  技术社区  ›  DaveDev

将表达式作为参数传递到泛型方法中,并将表达式插入CreateCriterials?

  •  0
  • DaveDev  · 技术社区  · 14 年前

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

        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>();
        }
    

    有很多服务使用这个方法,一切都很好。但我现在有一个要求,即某些服务需要比此方法更具体的搜索功能。

    所以我想知道是否可以将一个分离的标准作为一个表达式(或者其他什么)传入查询中?每个需要不同功能的服务都可以传入它需要的表达式。

    我不太熟悉NHibernate或表达方式,所以我可能在这里失去了我的深度。我主要是想感受一下什么是可能的。否则,我将不得不放弃通用方法,转而为每个服务使用更具体的存储库方法。谢谢。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Community datashaman    7 年前

    我在 my answer to a somewhat similar question 这可能对你有帮助。然而,这只是一个粗略的开端。如果您真的想将完整的LINQ表达式转换成NHibernate,并具有一些完整性的外观,我建议您首先搜索现有的解决方案。一个快速的谷歌搜索发现我这个: