relaciones relacion modelo mapas libro grafica entidades entidad edteam codigo atributos nhibernate caching fluent

nhibernate - mapas - modelo entidad relacion yahoo



¿Configurar el almacenamiento en caché de entidades y relaciones en Fluent Nhibernate? (1)

¿Alguien tiene un ejemplo de cómo configurar y qué entidades almacenar en caché en nhibernate con fluidez? ¿Ambos usando mapeo fluido y mapeo automático?

¿Y lo mismo para las relaciones de entidad, tanto de uno a muchos como de muchos a muchos?


He estado trabajando en una situación similar, en la que solo quiero almacenar en caché elementos específicos, y quiero que estos elementos se carguen una vez en el inicio y se mantengan en caché, hasta que la aplicación se cierre. Este es un caché de solo lectura, y se usa para completar una lista de países, de modo que un usuario pueda seleccionar su país de la lista.

Utilicé fluentNhibernate Mappings y definí Country my class con Cache.readonly ()

public class CountryMap : ClassMap<Country> { public CountryMap() { Schema("Dropdowns"); Cache.ReadOnly(); // Class mappings underneath } }

Mi mapa de clase de usuario se ve así:

public class UserMap : ClassMap<User> { Id(x => x.Id).Column("UserId"); Map(x => x.FirstName); Map(x => x.LastName); References(x => x.Country) .Column("CountryId"); }

Configurar manualmente Fluent Nhibernate para usar el segundo nivel de caché. Entonces, en mi fluida Confuguración, tengo:

var sessionFactory = Fluently.Configure() .Database (...) // set up db here .Mappings(...) //set up mapping here .ExposeConfiguration(c => { // People advice not to use NHibernate.Cache.HashtableCacheProvider for production c.SetProperty("cache.provider_class", "NHibernate.Cache.HashtableCacheProvider"); c.SetProperty("cache.use_second_level_cache", "true"); c.SetProperty("cache.use_query_cache", "true"); }) .BuildSessionFactory();

He comprobado el generador de perfiles SQL, y cuando obtengo una lista de países para un usuario, los cargan una vez y recibo visitas de caché después de cada otra solicitud. Lo bueno es que cuando se muestra el nombre del país de los usuarios, se carga desde el caché y no hace una solicitud a la base de datos. Recibí algunos consejos de esta publicación de Gabriel Schenker . ¿Espero que ayude? Si encontraste una manera mejor / adecuada, házmelo saber. ¡Gracias!