【问题标题】:NHibernate Criteria query on in-memory collection of entitiesNHibernate Criteria 查询内存中的实体集合
【发布时间】:2010-11-13 01:47:56
【问题描述】:

我想将 Criteria 查询应用于内存中的集合 实体,而不是数据库。这可能吗? 让 Criteria API 像 LINQ 一样工作?或者,转换 标准查询到 LINQ 查询。

谢谢!

【问题讨论】:

    标签: linq nhibernate hql nhibernate-criteria


    【解决方案1】:

    我不相信您可以使用 Criteria 来查询内存中的集合并仔细考虑它似乎没有多大意义。如果我正确理解了所有内容,那么您已经针对您的数据库进行了查询。我建议调整您的原始查询(无论您选择哪种方法)以包含所有过滤器。或者您可以使用 LINQ(按照您的建议)来优化您的结果。

    另外,你想从记忆中查询的原因是什么?

    【讨论】:

    • 谢谢,迈克。场景如下:我使用 Criteria 对数据库运行查询,并缓存查询结果(实体 ID)。
    • 现在,我更新了原始查询结果中的一个实体。我不想驱逐缓存的查询,而是想在内存中重新运行查询,并更新缓存的查询。
    【解决方案2】:

    听起来您正在使用自己的缓存机制。我强烈建议您查看 NHibernate 的二级缓存。它可以优雅地处理许多复杂的场景,例如在更新基础表时使查询结果无效。

    http://ayende.com/Blog/archive/2009/04/24/nhibernate-2nd-level-cache.aspx

    【讨论】:

    • 谢谢,詹姆斯。我知道二级缓存。我想制作一个更智能的版本,它会做更多的工作以避免使查询无效。
    • 您是否考虑/调查过与二级缓存的集成?创建自己的 ICacheProvider 来包装现有的 ICacheProvider 是否会为您提供足够的控制?只是一个想法,而不是从本质上重新实现二级缓存的整个功能集......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多