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!