将表达式作为参数传递到通用方法中,并将表达式插入 CreateCriteria?

发布于 2024-09-14 01:20:55 字数 690 浏览 2 评论 0原文

我在 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 或表达式不是很熟悉,所以我可能无法理解。我主要是想感受一下什么是可能的。否则,我将不得不放弃通用方法,转而为每个服务使用更具体的存储库方法。谢谢。

I have a generic method that exists in EntityRepository that gets entities by Name, which is defined as follows:

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

There are a number of services that use this method, and everything was fine.. but I now have a requirement that some services require more specific search capabilites than is available in this method.

So I'm wonder if it's possible for me to pass in a DetachedCriteria as an Expression (or something) that I could plug into the query? Each service that needs different functionality could pass in the expression it needs to.

I'm not hugely familiar with NHibernate or Expressions, so I might be out of my depth here. I'm mostly trying to get a feel for what's possible. Otherwise I'll have to abandon the generic method in favour of more specific Repository methods for each service. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

审判长 2024-09-21 01:20:55

我在我对一个有点类似的问题的回答中发布了一个代码示例,这可能会对您有所帮助。然而,这只是一个艰难的开始。如果您确实想将完整的 LINQ 表达式转换为 NHibernate 并具有一定的完整性,我建议您首先搜索现有的解决方案。快速谷歌搜索找到了我这个:

I posted a code sample in my answer to a somewhat similar question which might help you. However, it is only a rough beginning. If you really want to translate full LINQ expressions into NHibernate and have some semblance of completeness, I would recommend to search for existing solutions first. A quick Google search found me this:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文