Impacto en el almacenamiento en caché de NHibernate para búsquedas con resultados que incluyen el valor calculado asignado como una fórmula (por ejemplo, rango)

Al definir una propiedad calculada utilizando una fórmula en NHibernate, ¿cuáles son las implicaciones para cuando la fórmula varía su resultado dependiendo de las restricciones de consulta, especialmente con respecto al almacenamiento en caché de consultas?

Más específicamente, considere la siguiente clase simple de C #:

public class Entity
{
    public Entity() { }
    public virtual int Id { get; protected set; }
    public virtual string Key { get; protected set; }
    public virtual string Value { get; protected set; }
    public virtual int Rank { get; protected set; }
}

Mapeado con el siguiente mapeo NHibernate simple:

<class name="Entity" mutable="false">
    <id name="Id">
        <generator class="native">
    </id>
    <property name="Key"/>
    <property name="Value"/>
    <property name="Rank" formula="row_number() over(order by value)">
</class>

Corriendo con una fábrica de sesiones conhibernate.cache.use_query_cache opción establecida entrue, y consultado de las siguientes maneras:

ICriteria criteria = session.CreateCriteria(typeof(Entity));
criteria.SetCacheable(true);
criteria.SetCacheRegion("SearchResults");
IList<Entity> queryResult1 = criteria.List<Entity>();

criteria = session.CreateCriteria(typeof(Entity));
criteria.SetCacheable(true);
criteria.SetCacheRegion("SearchResults");
criteria.Add(Restrictions.Like("Key", "a", MatchMode.Anywhere));
IList<Entity> queryResult2 = criteria.List<Entity>();

Entity directResult = session.Load<Entity>(id);

¿Se comportará NHibernate de manera razonable para las Entidades devueltas? ¿O podría el valor de "Rango" de una consulta en caché contaminar el valor de Rango de otra consulta debido al caché de consulta? ¿Existe alguna otra inquietud al usar una fórmula de este tipo en las asignaciones de NHibernate?

EDITAR:

También podría valer la pena señalar que en mi caso particular, "Entidad" no es una entidad comercial de primera clase, sino una especie de meta-entidad. Se asigna a una vista de base de datos indexada sobre otras entidades de primera clase y se utiliza exclusivamente para buscar (la sesión. La llamada de carga (id) está diseñada y en realidad nunca debería ocurrir en la práctica).

Y si hayson implicaciones para el almacenamiento en caché, como sospecho, ¿qué alternativas podrían existir para un caso de uso similar para evitar problemas potenciales?

Respuestas a la pregunta(1)

Su respuesta a la pregunta